个人在层次遍历是有卡顿,没有想到使用队列要进行处理,递归确实没有处理出来。
先看代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
#这个我没想明白,用递归递不出来
if not root:
return []
queue = []
res = []
p = root
#这个实在难想,看似简单,但是挺巧妙的啊
#[3, 9, 20, 15, 7] 并不合预期
# queue.append(p)
# while queue:
# temp = queue.pop(0)
# if temp != None:
# res.append(temp.val)
# if temp.left != None:
# queue.append(temp.left)
# if temp.right != None:
# queue.append(temp.right)
#在队列的每个元素中添加一个标识符完成[[3], [9,20],[15,7]]
queue.append([p,0])
while queue:
temp = queue.pop(0)
if temp[0] != None:
if len(res) <= temp[1]:
res.append([])
res[temp[1]].append(temp[0].val)
if temp[0].left != None:
queue.append([temp[0].left,temp[1]+1])
if temp[0].right != None:
queue.append([temp[0].right,temp[1]+1])
return res