这总是使while循环中只有一个:
def height(self):
if self.root is None:
return 0
height = -1
q = self.Queue()
q.enqueue(self.root)
while not q.is_empty():
size = self.__len__()
height += 1
while size > 0:
node = q.dequeue()
if node.left is not None:
q.enqueue(node.left)
if node.right is not None:
q.enqueue(node.right)
size -= 1
return height
您还有其他想法(或想法如何更改此代码)以便返回正确的二叉树高度?
len是树中所有节点的数量self.Queue是具有方法高度的类的子类。
答案 0 :(得分:0)
问题在于代码的一部分
size = self.__len__()
while size > 0:
# [...]
size -= 1
循环主体的执行次数等于整个树中的节点数,这不是您想要的。
反而想要
size = len(q)