本文主要是介绍[leetcode] 515. Find Largest Value in Each Tree Row,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Find Largest Value in Each Tree Row
描述
You need to find the largest value in each row of a binary tree.
Example:
Input:1/ \3 2/ \ \ 5 3 9
Output: [1, 3, 9]
我的代码
简单的dfs。
要使用一个vector记录下每一层当前遍历到的最大值;
再将每次遍历到的值与当前层的值进行比较,保存最大值。
(!告诉自己:不要乱用puskback,要不然每次vector的长度都在增加)
/*** 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:vector<int> largestValues(TreeNode* root) {vector<int> rlt;int step=0;if (root){rlt.push_back(root->val);dfs(root->left,rlt, step+1);dfs(root->right,rlt,step+1);}return rlt;}private:void dfs(TreeNode* root, vector<int>& vec, int step){if (root){if (vec.size()==step)vec.push_back(root->val);else{if (root->val > vec[step])vec[step] = root->val;}dfs(root->left, vec, step+1);dfs(root->right, vec, step+1);}return; }
};
这篇关于[leetcode] 515. Find Largest Value in Each Tree Row的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!