类二进制搜索树Python
我是Python新手,在HackerRank中遇到了一个老问题,它定义了一个二叉树。我在上一节(和下一节)回顾了这段视频,试图理解下面代码中发生的事情,但我仍然没有完全理解到底发生了什么类二进制搜索树Python,python,class,binary-search-tree,Python,Class,Binary Search Tree,我是Python新手,在HackerRank中遇到了一个老问题,它定义了一个二叉树。我在上一节(和下一节)回顾了这段视频,试图理解下面代码中发生的事情,但我仍然没有完全理解到底发生了什么 我理解初始化(self)的作用,但我不确定信息的属性是什么。我也不明白为什么self.left=None,self.right=None,self.level=None 在第二个类BinarySearchTree中,有一个没有属性的init,我也不理解self.root=None 尽管我不理解下面的大部分代
- 我理解
的作用,但我不确定初始化(self)
信息的属性是什么。我也不明白为什么
,self.left=None
,self.right=None
self.level=None
- 在第二个类
中,有一个没有属性的init,我也不理解BinarySearchTree
self.root=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
类节点:
定义初始化(自我,信息):
self.info=info
self.left=无
self.right=无
self.level=无
定义(自我):
返回str(self.info)
类二进制搜索树:
定义初始化(自):
self.root=None
def创建(自我,val):
如果self.root==无:
self.root=节点(val)
其他:
当前=自根
尽管如此:
如果valcurrent.info:
如果当前为。右:
当前=当前。右
其他:
current.right=节点(val)
打破
其他:
打破
如果您尝试将树结构绘制为一组带有某些值的圆,您将得到如下结果:
“info”属性将包含圆圈内的值。二叉树的每个节点最多可以有两个子节点,这就是“left”和“right”属性的用途。如果“left”属性为“None”,则基本上表示左侧没有子节点(如图像上的节点16)。如果创建一个新节点,通常不希望它有任何子节点,这就是为什么默认情况下“left”和“right”属性为“None”
类“BinarySearchTree”表示一棵树作为一个整体,并将当前根节点(图像上的顶部节点)保留在相应的“root”属性中。树的开头是空的,因此“root”属性等于“None”
希望有帮助 我想我明白你写的。当我在没有任何东西的情况下运行代码时,比如
print(2)
,我会得到AttributeError:“NoneType”对象没有属性“info”。
但是当我print(root.info)
时,我仍然会得到根的正确值,并且上面有相同的错误。类的定义方式是否有问题?不确定print(2)的含义,但看起来您正在尝试访问尚未创建的类实例的属性。尝试以下操作:打印(如果root不是None-other“N/A”,则为root.info)。