【发布时间】:2020-10-09 07:06:10
【问题描述】:
我正在尝试编写一个代码,如果该值存在于二叉树中,则输出返回 True 或 False。
这是我的尝试:
定义一个名为 Node 的类:
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
定义一个名为 BinaryTree + LOOKUP 函数的类:
class BinaryTree:
def __init__(self, rootdata):
self.root = Node(rootdata)
def LOOKUP(self, lookupval):
if lookupval < self.data:
if (self.left == None):
self.left.LOOKUP(lookupval)
return False
elif lookupval > self.data:
if (self.right == None):
self.right.LOOKUP(lookupval)
return False
else:
return True
剩下的,将值输入二叉树:
Tree = BinaryTree(24)
Tree.root.left = Node(11)
Tree.root.left.left = Node(199)
Tree.root.left.right = Node(167)
Tree.root.right = Node(2)
Tree.root.right.right = Node(8)
print(Tree.LOOKUP(11))
print(Tree.LOOKUP(13))
但是,我不断收到错误 'BinaryTree' object has no attribute 'data'..
我明白LOOKUP函数的定义会有一些错误, 但有没有机会我可以保持这种格式并仍然返回输出:
True
False
谢谢,
【问题讨论】:
-
你应该像
Tree.LOOKUP(11, Tree.root)一样打电话给LOOKUP。然后递归使用self.node.data/left/right。 -
该树应该是二叉搜索树,还是只是任意二叉树,没有任何特定顺序?因为您的
LOOKUP方法的逻辑(在可以围绕其问题提取的范围内)似乎是用于搜索树,如果它要正常运行,则需要按顺序排列。而且您肯定不是在构建有序树。
标签: python python-3.x binary-tree binary-search-tree lookup