解压由 TreeNode 和 Integer 组成的元组的正确方法是什么?

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

我正在实现一种算法,需要在 python 中从树中追加和弹出节点(以 FIFO 方式)。

queue = []  # empty list
root = TreeNode()  # a standard TreeNode with val, left and right

我正在尝试将根和整数存储在队列中:

queue.append((root,0))

... 然后尝试弹出它:

n,l = queue.pop(0)

现在,我收到以下错误:

TypeError: cannot unpack non-iterable TreeNode object
    ^^^
    n,l = queue.pop(0)

我测试了是否可以仅追加和弹出根节点,它似乎可以工作。问题是包含整数,所以我假设我的语法不正确。我也尝试过:

queue.append(((root,0)))
queue.append(Tuple((root,0)))
queue.append([(root,0)])  # that one gave me ValueError: not enough values to unpack (expected 2, got 1)

它们似乎都不起作用。

您能在这件事上提供任何帮助吗?

python python-3.x runtime-error iterable-unpacking
1个回答
0
投票

您在此处粘贴的代码(以及从队列中解压元组的语法)基本上可以工作,因此问题在其他地方 - 如果您收到该错误,那么您绝对不会always将元组放入队列中。

class TreeNode:
    pass


queue = []
root = TreeNode()

queue.append((root, 0))  # A tuple.
queue.append(root)  # Just a node, not a tuple.
n, l = queue.pop(0)  # Works.
n, l = queue.pop(0)  # Doesn't.
© www.soinside.com 2019 - 2024. All rights reserved.