[LeetCode]513. Find Bottom Left Tree Value
题目描述
思路
递归,DFS,到达层数大于最大层时,更新res和最大层的数值
代码
#include <iostream>
#include <vector>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
void travel(TreeNode* root, int &res, int curDeep, int& maxDeep) {
if (root == NULL) return;
travel(root->left, res, curDeep + 1, maxDeep);
travel(root->right, res, curDeep + 1, maxDeep);
if (curDeep > maxDeep) {
res = root->val;
maxDeep = curDeep;
}
}
int findBottomLeftValue(TreeNode* root) {
int res = 0, maxDeep = 0, curDeep = 1;
travel(root, res, curDeep, maxDeep);
return res;
}
};
int main() {
TreeNode* t1 = new TreeNode(1);
TreeNode* t2 = new TreeNode(2);
TreeNode* t3 = new TreeNode(3);
TreeNode* t4 = new TreeNode(4);
t1->left = t2;
t1->right = t3;
t3->left = t4;
Solution s;
cout << s.findBottomLeftValue(t1) << endl;
system("pause");
return 0;
}