【问题标题】:Height of a Binary Tree - iterative二叉树的高度 - 迭代
【发布时间】:2019-03-31 20:18:58
【问题描述】:

这总是只产生一个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 是类的子类,具有方法高度。

【问题讨论】:

  • 请发帖minimal reproducible example。什么是__len__,什么是self.Queue
  • len 是树中所有节点的个数,self.Queue 是类的子类,方法高度。
  • edit您的问题添加信息。
  • 我已经完成了
  • 您还应该在代码的每个部分中添加一些关于您打算做什么的说明。我花了一段时间才弄清楚您打算在外循环的每次迭代中将队列中的节点“推进”一层。

标签: python binary-tree


【解决方案1】:

问题是在代码部分

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

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

你想要的

size = len(q)

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 2021-09-10
    • 2019-05-18
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多