题目如下:
Given the
root
of a binary tree, the level of its root is1
, the level of its children is2
, and so on.Return the smallest level
X
such that the sum of all the values of nodes at levelX
is maximal.
Example 1:
Input: [1,7,0,7,-8,null,null] Output: 2 Explanation: Level 1 sum = 1. Level 2 sum = 7 + 0 = 7. Level 3 sum = 7 + -8 = -1. So we return the level with the maximum sum which is level 2.
Note:
- The number of nodes in the given tree is between
1
and10^4
.-10^5 <= node.val <= 10^5
解题思路:没什么好说的,依次计算出每一层的值,求出最大即可。
代码如下:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): dic = {} def recursive(self,node,level): self.dic[level] = self.dic.setdefault(level,0) + node.val if node.left != None: self.recursive(node.left,level+1) if node.right != None: self.recursive(node.right,level+1) def maxLevelSum(self, root): """ :type root: TreeNode :rtype: int """ self.dic = {} self.recursive(root,1) max_val = 0 res = 0 for key,val in self.dic.iteritems(): if max_val < val: max_val = val res = key return res