思路:
简单的递归。利用help函数,如果level大于当前最大level,说明它是该level一个最左的一个值 注意传入的是引用。其他思路:
还有一种方法是利用queue,从右往左往里push,思想是二叉树的层序遍历,只不过是从右向左,最后一个位置就是最后的结果。
C++代码:
/**
* 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:
static void help(TreeNode* root, pair<int,int> &ret, int level) {
if (root == NULL)
return;
if (root->left==NULL && root->right==NULL) {
if (ret.first < level) {
ret.first = level;
ret.second = root->val;
}
return;
}
help(root->left, ret, level+1);
help(root->right, ret, level+1);
return;
}
int findBottomLeftValue(TreeNode* root) {
if (root == NULL)
return 0;
pair<int, int> ret{0,root->val};
help(root, ret, 0);
return ret.second;
}
};