问题详见: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]
解题思路:
由题目可知该问题也是同样应用BFS算法搜索每一层以得到每一层的最大值,其算法复杂度为 O(n) 。下面是算法的C++代码和提交结果图。
BFS:
/**
* 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> solution;
void helper(TreeNode* node, int cl) {
if (node == NULL) {
return;
}
if (solution.size() < cl + 1) {
solution.push_back(node->val);
} else {
if (solution[cl] < node->val) {
solution[cl] = node->val;
}
}
helper(node->left, cl+1);
helper(node->right, cl+1);
}
vector<int> largestValues(TreeNode* root) {
if(root == NULL) {
return solution;
}
helper(root, 0);
return solution;
}
};
提交运行结果: