我刚刚在Python中介绍了oop和二进制树,但是当我尝试实现max depth方法时遇到了问题。它似乎没有给我正确的答案,它给了我1,而数字应该更大或者我可能完全误解了一些东西。我在下面添加了一小部分代码
class Node:
def __init__(self, value, left=None, right=None):
self.left = left
self.right = right
self.value = value
self.count = 1
def depth(self):
if self.left:
left_depth = self.left.depth()
else:
left_depth = 0
right_depth = self.right.depth() if self.right else 0
print(max(left_depth, right_depth) + 1)
tree = createTree(words) # list of words
tree.depth()
答案 0 :(得分:2)
print(max(left_depth, right_depth) + 1)
应该是......
return max(left_depth, right_depth) + 1
这样您的.depth()
方法在调用时实际返回一个值。
然后,当你真正想要一个结果时:
print(tree.depth())
另外,你使用两种不同的if-else结构有点奇怪。
left_depth = self.left.depth() if self.left else 0
right_depth = self.right.depth() if self.right else 0
会很好用,也会更简洁。