zoukankan      html  css  js  c++  java
  • Python3解leetcode Average of Levels in Binary Tree

    问题描述:

    Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.

    Example 1:

    Input:
        3
       / 
      9  20
        /  
       15   7
    Output: [3, 14.5, 11]
    Explanation:
    The average value of nodes on level 0 is 3,  on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].

    思路:

    考虑BFS算法,因为这是第一次碰到BFS算法,因而将该题记录

    代码:

     1 # Definition for a binary tree node.
     2 # class TreeNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution:
     9     def averageOfLevels(self, root: TreeNode) -> List[float]:
    10         result = []
    11         self.BFS(root,result)
    12         return result
    13         
    14         
    15     def BFS(self,root,result):
    16         if root == None: return
    17         queue = [root]
    18         while queue:#如果queue不为空
    19             val = [i.val for i in queue if i]
    20             if len(val):result.append(sum(val)/len(val))
    21             queue = [child for node in queue if node for child in (node.left,node.right)]
    22  

    BFS的基本思路是:将每一层的结点放置于一个list中,然后遍历List对每个结点进行相应操作,下一步更新该list,将该list放置更下一层的结点。该算法不用递归调用自身,相对而言理解比较容易

  • 相关阅读:
    【转载】openCV轮廓操作
    求两个已排序数组的中位数
    朴素贝叶斯分类
    Different Ways to Add Parentheses
    QSerialPort
    opencv鼠标绘制直线 C++版
    Word Break
    C++中 指针 与 引用 的区别
    敲入url到浏览器后会发生什么
    Sort List 分类: leetcode 算法 2015-07-10 15:35 1人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/xiaohua92/p/11540207.html
Copyright © 2011-2022 走看看