leetcode-107 二叉树的层次遍历
1. 二叉树的层次遍历,即通过使用队列的方法(可用数组代替),每次存储某一层的所有节点,然后在一个for循环中遍历该节点,将所有节点的子节点入队,并记录下所有节点的值,将他们堆入栈中。
2. example
- 根节点入队 cur=[3],res=[[3]]
- 遍历cur,通过中间变量next存储第二层所有节点,再将所有节点值堆入栈中,用next中元素覆盖cur,next=[9,20],cur=[9,20],res=[[3],[9,20]]
- 遍历cur,通过中间变量next存储第三层所有节点,再将所有节点值堆入栈中,用next中元素覆盖cur,next=[15,7],cur=[15,7],res=[[3],[9,20],[15,7]]
- 遍历cur,通过中间变量next存储第四层所有节点,再将所有节点值堆入栈中,用next中元素覆盖cur,next=[],cur=[],res=[[3],[9,20],[15,7]]
3. code
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
cur=[root]
stack=[[root.val]]
while cur:
next=[]
val=[]
for i in cur:
if i.left:
next.append(i.left)
if i.right:
next.append(i.right)
cur=next
for j in next:
val.append(j.val)
if val:
stack.append(val)
return stack[::-1]