Average of Levels in Binary Tree

    这道题被标记为简单,学过广搜(BFS)应该会很容易做出来

  题目:

 

  思路:

    BFS算法搜索每一层的节点,并把他们保存在一个列表a中,再利用循环将这一层的total加起来,并判断当前节点是否有子节点,有就添加到列表的后面,当搜索完一层的节点,就计算每一层的平均值并添加到另外一个新的列表b中,然后再判断是否列表为空,为空就返回列表b,否则就再次循环剩下的。

  代码:

    

 1 class Solution(object):
 2     def averageOfLevels(self, root):
 3         """
 4         :type root: TreeNode
 5         :rtype: List[float]
 6         """
 7         a = [root]
 8         b = []
 9         while len(a) > 0:
10             c = len(a)
11             total = 0.0    
12             for i in range(0, c):
13                 node = a.pop(0)
14                 total += node.val
15                 if node.left:
16                     a.append(node.left)
17                 if no.right:
18                     a.append(node.right)
19             b.append(total / c)
20         return b

  感受:

      开始卡在了从列表读出节点,一直提示错误,因此换了一种方法,浪费了一些空间,刚才试了一下又可以了,很谜

 

posted @ 2017-09-05 20:06  唐僧洗发爱飘柔  阅读(119)  评论(0)    收藏  举报