概述
107. 二叉树的层序遍历 II
难度中等423收藏分享切换为英文接收动态反馈
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / 9 20 / 15 7
返回其自底向上的层序遍历为:
[ [15,7], [9,20], [3] ]
1.
# 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 levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
queue = collections.deque()
queue.append(root)
res = []
while queue:
tmp = []
for i in range(len(queue)):
node = queue.popleft()
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(tmp)
#以下代码可以用return res[::-1]
le = len(res)
for i in range(le//2):
tm = res[i]
res[i] = res[le-i-1]
res[le-i-1] = tm
return res
# 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
2.优化函数换调用
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
queue = collections.deque()
queue.append(root)
res = []
while queue:
tmp = []
for i in range(len(queue)):
node = queue.popleft()
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(tmp)
# le = len(res)
# for i in range(le//2):
# tm = res[i]
# res[i] = res[le-i-1]
# res[le-i-1] = tm
# return res
return res[::-1]
最后
以上就是成就金鱼为你收集整理的107. 二叉树的层序遍历 II的全部内容,希望文章能够帮你解决107. 二叉树的层序遍历 II所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复