二叉树的高度-迭代

时间:2019-03-31 12:04:51

标签: python binary-tree

这总是使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是具有方法高度的类的子类。

1 个答案:

答案 0 :(得分:0)

问题在于代码的一部分

size = self.__len__()
while size > 0:
    # [...]
    size -= 1

循环主体的执行次数等于整个树中的节点数,这不是您想要的。

反而想要

size = len(q)