Leetcode 树(102, 637)

637: 二叉树的层平均值
给定一个非空二叉树,返回一个由每层节点平均值组成的数组;
 
class Solution(object):
    def averageOfLevels(self, root):
        """
        :type root: TreeNode
        :rtype: List[float]
        实现方法:
        设置两个数组,一个用于记录每层树的总和,一颗树记录每层树的节点个数;
        """
        sum=[0.0 for i in range(1000)]
        count=[0.0 for i in range(10000)]

        num=0
        def all(root,num):
            if root:
                sum[num]=sum[num]+root.val
                count[num]=1+count[num]
                all(root.left,num+1)
                all(root.right,num+1)
        
        all(root,num)
        
        res=[]
        
        for i in range(len(sum)):
            if count[i]!=0:
                res.append(sum[i]/count[i])
        
        return res
注意上述的策略:
nums=[0.0 for i in range(100)]-------------[0.0,0.0........]
nums[i for i in range(100)]-----------------[0,1,2,3,4........99]
 
 
 
新定义一个函数,添加一个层数参数,如果目前答案的列表答案个数等于层数,那么当前层数的列表append新元素即可。
def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        result=[]
        
        def all(root,level):
            if root:
                if len(result)<level+1:
                    result.append([])
                result[level].append(root.val)
                all(root.left,level+1)
                all(root.right,level+1)
        
        all(root,0)
        return result

 

posted @ 2019-03-10 16:08  Qian1996  阅读(132)  评论(0编辑  收藏  举报