这给出了一个列表,其中包含每个root到leaf的路径:
def binaryTreePaths(self, root):
from collections import deque
if root is None:
return []
queue = deque( [ [root, str(root.val)] ] )
ans = []
while queue:
front, path = queue.popleft()
if front.left is None and front.right is None:
ans += path,
continue
if front.left:
queue += [front.left, path + "->" + str(front.left.val)],
if front.right:
queue += [front.right, path + "->" + str(front.right.val)],
return ans
我不明白这是如何工作的,因为我们有一棵1-2-3的树(节点1有左右孩子)。在while循环之后的第一行,当你对它进行搜索时,队列再次是deque([])。由于front是node1而front.left存在(因为node1有一个左子),我们将front.left和一个字符串再次附加到队列。
然后队列是deque([node2,“stringhere”])。然后我们点击第三个if语句:由于node1确实有一个正确的子节点(node3),我们再次添加到队列 ,然后队列变为deque([node2,“stringhere”,node3,“anotherstring”] )。
然后我们返回并点击while循环;由于队列不为空,我们有:
front, path = queue.popleft()
我们的队列是deque([node2,“stringhere”,ndoe3,“anotherstring”])但是由于队列中有4个参数,因此无法调用front,path。
我没有得到什么?