/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
//找最左边,使用前序遍历,这样才先优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值。
int maxleft = INT_MIN;//深度
int leftval ;
void findleft(TreeNode*node, int lefthigh){
if (node->left == NULL && node->right ==NULL){
if (lefthigh > maxleft){
maxleft = lefthigh;
leftval = node->val;
}
return;
}
if (node->left){
lefthigh++;
findleft(node->left, lefthigh);
lefthigh--;
}
if (node->right){
lefthigh++;
findleft(node->right, lefthigh);
lefthigh--;
}
return ;
}
int findBottomLeftValue(TreeNode* root) {
findleft(root, 0);
return leftval;
}
};