, поэтому дайте следующее дерево:
Я должен вернуть обход уровня дерева по порядку слева направо: таким образом, приведенный выше пример выведет список списков:
[[3], [9,20], [15,7]]
Я написал следующий код, идея заключается в сохранении значения узла и его глубинырекурсивно в очереди, затем итерируйте кортежи очереди и поместите их в промежуточный список O, если больше нет узла такой же глубины, добавьте O к выводу и очистите O и так далее. Однако мой код тайм-аут любой помощи?
import queue
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
def helper(root,res,level):
if not root:
return res
l=level+1
res.put((root.val,level))
helper(root.left,res,l)
helper(root.right,res,l)
res=queue.Queue()
helper(root,res,0)
d=1
output=[]
node,depth=res.get()
output.append([node])
while res:
o=[]
node,depth=res.get()
while d ==depth:
o.append(node)
node,depth=res.get()
else:
d+=1
output.append(o)
return output