您需要在二叉树的每一行中找到最大的值。
示例:
输入: 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