while语句在顺序遍历中带有堆栈

问题描述 投票:0回答:1

[当我想将所有节点保存到顺序列表sorted_node_val中时,我使用while语句。

    def closestKValues(self, root, target, k):
        # write your code here
        stack = []
        sorted_node_val = []
        node = root
        while node:
            stack.append(node)
            node = node.left

        while stack is not None:
            node = stack.pop()
            sorted_node_val.append(node.val)
            if node.right:
                node = node.right
                while node:
                    stack.append(node)
                    node = node.left

但是上面的代码产生错误while stack is not None:,结果是

  File "/Users/Python/901.py", line 35, in closestKValues
    node = stack.pop()

IndexError: pop from empty list

我将while语句更改为while stack:,并修复了此错误。但我想知道while stack is not None:while stack:

有什么区别
python while-loop stack tree-traversal
1个回答
0
投票

在堆栈的最后,stack = []。这是长度为0的列表,而不是none对象。您可以通过尝试None == [](将为False)进行验证。

© www.soinside.com 2019 - 2024. All rights reserved.