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