18.leetcode107_binary_tree_level_order_traversal_II

1.题目描述

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

给出一个二叉树,返回它每层树杈的值

2.题目分析

题目要求以列表形式输出,列表的下标为每层层数。所以控制列表的层数与其下标相同即可

3.解题思路

# 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, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        list_tree=[]   #设置空列表
        def tree(node,list_tree,dep): #自定义tree()函数,向列表中添加元素
            if node!=None: 
                if len(list_tree)<dep+1:  #控制列表的下标与其层数相同
                    list_tree.append([])    #拓展列表
                list_tree[dep].append(node.val) #添加每层的值
                if node.left!=None:         #!!!
                    tree(node.left,list_tree,dep+1) 
                if node.right!=None:
                    tree(node.right,list_tree,dep+1)
        
        tree(root,list_tree,0)
        return list_tree[::-1]  #反转列表元素

4.解题感悟

标注‘!!!’的地方,是因为我一开始用的是return调用tree()函数,结果不能执行下一条命令。由此发现,自己对于函数的理解与运用还存在很大不足,需要努力改进

posted @ 2018-02-08 23:25  vlice  阅读(79)  评论(0编辑  收藏  举报