问题描述:
Given a binary tree, find the leftmost value in the last row of the tree.
示例:
Input: 2 / \ 1 3 Output: 1
Input: 1 / \ 2 3 / / \ 4 5 6 / 7 Output: 7
Note: You may assume the tree (i.e., the given root node) is not NULL.
问题分析:转换以下就是求每一层的最左侧的结点,即层次遍历法,当然亦可以用根的先序遍历。
过程详见代码:
/**
* 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:
int findBottomLeftValue(TreeNode* root) {
int maxDepth = 0, res = 0;
bl(root, 1, maxDepth, res);
return res;
}
void bl(TreeNode* root,int depth,int& maxDepth,int& res)
{
if (root == nullptr) return;
if (depth > maxDepth)
{
maxDepth = depth;
res = root->val;
}
bl(root->left, depth + 1, maxDepth, res);
bl(root->right, depth + 1, maxDepth, res);
}
};