您需要在二叉树的每一行中找到最大的值。
示例:
输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]
C++
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
void dfs(TreeNode* root, map<int,vector<int>>& tmp, int k)
{
if(root)
{
tmp[k].push_back(root->val);
dfs(root->left,tmp,k+1);
dfs(root->right,tmp,k+1);
}
}
vector<int> largestValues(TreeNode* root)
{
map<int,vector<int>> tmp;
dfs(root, tmp, 1);
vector<int> res;
for(auto it:tmp)
{
int val=*max_element(it.second.begin(),it.second.end());
res.push_back(val);
}
return res;
}
};
python
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def dfs(self, tmp, root, k):
if root:
if k not in tmp:
tmp[k]=[root.val]
else:
tmp[k].append(root.val)
self.dfs(tmp, root.left, k+1)
self.dfs(tmp, root.right, k+1)
def largestValues(self, root: TreeNode) -> List[int]:
tmp={}
self.dfs(tmp,root,1)
res=[]
for key in tmp:
res.append(max(tmp[key]))
return res