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放置更下一层的结点。该算法不用递归调用自身,相对而言理解比较容易

  • 相关阅读:
    mybatis
    队列
    JDK中的Timer和TimerTask详解
    NIOGoodDemo
    24-C#笔记-异常处理
    23-C#笔记-正则表达式
    22-C#笔记-预编译指令
    21-C#笔记-名称空间
    20-C#笔记-接口
    19-C#笔记-多态性
  • 原文地址:https://www.cnblogs.com/xiaohua92/p/11540207.html
Copyright © 2011-2022 走看看