Tree 级别顺序树打印输出错误查找
我实现了层次顺序树遍历,但是它不会打印出最后两个节点。我非常确信这是一种正确的方法,我想让这种方法发挥作用!有人能告诉我我的代码哪里做错了吗Tree 级别顺序树打印输出错误查找,tree,binary-tree,tree-traversal,Tree,Binary Tree,Tree Traversal,我实现了层次顺序树遍历,但是它不会打印出最后两个节点。我非常确信这是一种正确的方法,我想让这种方法发挥作用!有人能告诉我我的代码哪里做错了吗 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None import queue cl
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
import queue
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
q = queue.Queue()
q.put(root)
self.level(root, q)
def level(self, node, q):
if node == None:
return
q.put(node.left)
q.put(node.right)
q = self.printyo(q)
self.level(node.left, q)
self.level(node.right, q)
def printyo(self, q):
if q.empty():
return
else:
node = q.get()
if node != None:
print(node.val)
return q
但是,
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
Above code only prints out
3
9
20
您可以使用额外的打印来打印剩余的节点(您已经为每个函数调用添加了两个节点,因此您还应该在某个点打印两个节点;因为您正在处理队列,所以在何时打印并不重要):
话虽如此,我建议您调整逻辑,以确保节点按级别顺序打印。迭代工作或在递归中使用某种构造,以确保以广度优先的方式填充队列,而不是使用深度优先的方法。这个答案更准确。你只需要两张照片,不管它们在哪里;第一个似乎表明它必须位于代码的特定部分,但事实并非如此——因为您使用的是队列,所以无论哪种方式都会得到相同的输出。这有意义吗?
def level(self, node, q):
# ... code unchanged
self.printyo(q)
self.printyo(q)
# ... code unchanged