【题目】
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其自底向上的层序遍历为:
[
[15,7],
[9,20],
[3]
]
【代码】
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def dfs(self,root,dep):
if not root:
return
if len(self.ans)<dep:
self.ans.append([root.val])
else:
self.ans[dep-1].append(root.val)
self.dfs(root.left,dep+1)
self.dfs(root.right,dep+1)
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
self.ans=[]
self.dfs(root,1)
return self.ans[::-1]