声明:
今天是第21道题。给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除
(手动比心ღ( ´・ᴗ・` ))
正文
题目:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。
例如:
给定二叉树[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, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def _levelOrderBottom(self, level, result, node):
if node:
if level > len(result):
result.insert(0,[])
result[-level].append(node.val)
self._levelOrderBottom(level+1, result, node.left)
self._levelOrderBottom(level+1, result, node.right)
def levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
level, result = 1, list()
self._levelOrderBottom(level, result, root)
return result
结尾
解法1:https://blog.csdn.net/qq_17550379/article/details/80837718