【发布时间】:2020-10-26 14:42:17
【问题描述】:
我不断收到属性错误,BST 不包含包含的属性,这是一个简单的 BST 程序,用于检查节点是否包含子树。
我是 python 新手,所以我不知道这里有什么问题,任何帮助将不胜感激。
from collections import namedtuple
class BST:
#We are using namedtuple since it allows us to create an object with names for each position
tuple = namedtuple('tuple', ['left', 'right', 'value'])
#here, contains is a static method since we have to create a utility function to check
#if the node has the value in its subtrees.
@staticmethod
def contains(root, value):
if root.value == value:
return True
#means the value is greater than the root node and must lie on the right sub-tree.
elif root.value < value:
#if the right subtree is empty, than the said node does not contain the value, return false.
if root.right == None:
return False
#it does contain a right subtree, recursively call the contains method again till you find the value.
else:
return BST.contains(root.right,value)
#else,root value is lesser than the root node and must lie on the left side.
else:
#if the left subtree is empty, than the said node does not contain the value, return false.
if root.left == None:
return False
else:
return BST.contains(root.left,value)
n1 = BST.tuple(value=1, left=None, right=None)
n3 = BST.tuple(value=3, left=None, right=None)
n2 = BST.tuple(value=2, left=n1, right=n3)
result= BST.contains(n2, 3)
print (result)
【问题讨论】:
标签: python tree binary-search-tree nodes attributeerror