CSDN处女作,从此就要走上博主的道路了,希望能够持之以恒吧 :)
题目:LeetCode 515
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) {}
* };
*/
struct P {
TreeNode *t;
int l;
P(TreeNode *t, int l) : t(t), l(l) {}
};
class Solution {
public:
vector<int> largestValues(TreeNode* root) {
vector<int> v;
if (root == NULL) {
return vector<int>();
}
int pre = 1;
int cur = 0;
queue<P> q;
int maxv = root->val;
q.push(P(root, 1));
while (!q.empty()) {
P p = q.front();
q.pop();
cur = p.l;
if (p.t != NULL) {
q.push(P(p.t->left, p.l+1));
q.push(P(p.t->right, p.l+1));
if (cur > pre) {
pre = cur;
v.push_back(maxv);
maxv = p.t->val;
}
if (p.t->val > maxv)
maxv = p.t->val;
}
}
v.push_back(maxv);
return v;
}
};