最近好像掌握了些调色的技巧
色彩好像比以前处理的图片要明亮一些
直接上图
107-二叉树的层次遍历
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3
/
9 20
/
15 7
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
思路:
这一题也是很简单了,其实就是在第102题-二叉树的层次遍历的基础上改动结果的表达形式即可,对第102题-二叉树的层次遍历不熟悉的读者可以先看看我写的这篇文章:
程小新同学:LeetCode102-二叉树的层次遍历zhuanlan.zhihu.com其实就是将得到的层次遍历结果的列表逆序输出即可,太easy了。
代码如下:
class Solution(object):
# 本题就是在102题的基础上逆序输出即可
def levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
# 定义列表用来保存层次遍历的数据
root_data = []
# 用来保存每一层的节点
nodes_list = [root]
if root is None:
return root_data
while nodes_list:
# 用来保存每一层节点的val值
level_val = []
# 用来保存下一层节点
next_nodes = []
for node in nodes_list:
level_val.append(node.val)
if node.left and node.left.val is not None:
next_nodes.append(node.left)
if node.right and node.right.val is not None:
next_nodes.append(node.right)
nodes_list = next_nodes
root_data.append(level_val)
root_data.reverse()
return root_data
def createBTree(self, data, index=0):
pNode = None
if index < len(data):
pNode = TreeNode(data[index])
pNode.left = self.createBTree(data, 2*index+1)
pNode.right = self.createBTree(data, 2*index+2)
return pNode
if __name__ == "__main__":
data = [3, 9, 20, None, None, 15, 7]
root = Solution().createBTree(data)
print(Solution().levelOrderBottom(root))
执行效率也是奇高,达到了100%!