我正在实现一种算法,需要在 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)
它们似乎都不起作用。
您能在这件事上提供任何帮助吗?
您在此处粘贴的代码(以及从队列中解压元组的语法)基本上可以工作,因此问题在其他地方 - 如果您收到该错误,那么您绝对不会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.