LeetCode Algorithm部分.515
【515】 Find Bottom Left Tree Value
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]
该题的题意为寻找树的每层节点的最大值,依然用的是层遍历。下面是实现
/**
* 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> answer;
vector<TreeNode*> nq;
if(root==NULL) return answer;
else if(root->left == NULL && root->right == NULL) answer.push_back(root->val);
else{
answer.push_back(root->val);
if(root->left != NULL) nq.push_back(root->left);
if(root->right != NULL) nq.push_back(root->right);
}
while(!nq.empty()){
int max1 = nq[0]->val;
vector<TreeNode*> tem;
for(int i = 0; i < nq.size(); i++){
max1 = max(nq[i]->val, max1);
if(nq[i]->left != NULL) tem.push_back(nq[i]->left);
if(nq[i]->right != NULL) tem.push_back(nq[i]->right);
}
answer.push_back(max1);
nq = tem;
}
return answer;
}
};