描述
Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input:
2
/ \
1 3
Output:
1
Example 2:
Input:
1
/ \
2 3
/ / \
4 5 6
/
7
Output:
7
思路
使用宽度优先搜索的方式递归遍历树,遍历过程中将结果向量大小与当前深度比较,大于或者等于则说明当前深度第一次遍历到,而且采用的是前序遍历的方式,
因此每一深度总是左边的第一个元素被遍历,所以用一个向量直接保存每一深度左边的第一个元素,最后输出向量的最后一个元素即为所求的值。
代码
/**
* 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) {
vector<int> mas;
dfs(root, 0, mas);
return mas[mas.size() - 1];
}
void dfs(TreeNode* node, int height, vector<int> &res) {
if(!node) return;
if(height >= res.size()) {
res.push_back(node->val);
}
dfs(node->left, height + 1, res);
dfs(node->right, height + 1, res);
}
};