gpt4 book ai didi

python - Python 类 二叉搜索树

转载 作者:行者123 更新时间:2023-12-01 08:10:24 25 4
gpt4 key购买 nike

我是 Python 新手,在 HackerRank 中遇到了一个老问题,它定义了二叉树。我在 classes and instances 上查看了此视频(以及下一个)尝试理解下面的代码中发生了什么,但我仍然没有完全理解发生了什么。

  • 我了解 __ init __(self, ...) 的作用,但我不确定 info 有什么属性。我也不明白为什么 self.left = Noneself.right = Noneself.level = None
  • 在第二个类 BinarySearchTree 中,有一个没有属性的 init,我也不明白 self.root = None

尽管我不理解下面的大部分代码,但我认为如果有人可以解释为什么这个人设置 self.____= None,它将帮助我理解如何定义二分搜索树。

class Node:
def __init__(self, info):
self.info = info
self.left = None
self.right = None
self.level = None

def __str__(self):
return str(self.info)

class BinarySearchTree:
def __init__(self):
self.root = None

def create(self, val):
if self.root == None:
self.root = Node(val)
else:
current = self.root

while True:
if val < current.info:
if current.left:
current = current.left
else:
current.left = Node(val)
break
elif val > current.info:
if current.right:
current = current.right
else:
current.right = Node(val)
break
else:
break

最佳答案

如果您尝试将树结构绘制为一堆圆圈,其中包含一些值,您将得到类似的结果:

Binary tree

“info”属性将包含圆圈内的值。二叉树的每个节点最多可以有两个子节点,这就是“left”和“right”属性的用途。如果“left”属性为“None”,则基本上意味着左侧还没有子节点(就像图像上的节点 16 的情况一样)。如果您创建一个新节点,您通常不希望它有任何子节点,这就是为什么 'left' 和 'right' 属性默认为 'None'。

“BinarySearchTree”类代表整个树,并将当前根节点(图像上的顶部节点)保留在相应的“root”属性中。一开始树是空的,因此“root”属性等于“None”。

希望对你有帮助!

关于python - Python 类 二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com