- 题目:
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/
1 3
输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
7
- 解题思路
首先计算出树的深度,然后利用层次遍历,将最后一行压入到队列中,再直接返回队顶元素即可。
代码实现:
int deep(TreeNode* root)
{
if(!root)
return 0;
int a = deep(root->left);
int b = deep(root->right);
return a>b? a+1: b+1;
}
int findBottomLeftValue(TreeNode* root) {
deque<TreeNode*> qu;
int res, k = 0;
int k1 = deep(root);
if(!root)
return 0;
qu.push_back(root);
while(!qu.empty() && k < k1 - 1)
{
int size = qu.size();
for(int i = 0; i < size; i++)
{
TreeNode* temp_node = qu.front();
qu.pop_front();
if(temp_node->left)
qu.push_back(temp_node->left);
if(temp_node->right)
qu.push_back(temp_node->right);
}
k++;
}
return qu.front()->val;
}