给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/ \
1 3
输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
7
注意: 您可以假设树(即给定的根节点)不为 NULL。
解法一:
class Solution {
private:
int num;
public:
int findBottomLeftValue(TreeNode* root)
{
if(!root->left && !root->right)
return root->val;
int maxn = 0;
DFS(root, 0, maxn);
return num;
}
void DFS(TreeNode *root, int count, int &maxn)
{
if(root == nullptr)
return;
if(count > maxn)
{
maxn = count;
num = root->val;
}
DFS(root->left, count + 1, maxn);
DFS(root->right, count + 1, maxn);
}
};
解法二:
class Solution {
public:
int findBottomLeftValue(TreeNode* root)
{
queue<TreeNode*> q;
q.push(root);
TreeNode* curr;
while (!q.empty())
{
curr = q.front();
q.pop();
if (curr->right != NULL) q.push(curr->right);
if (curr->left != NULL) q.push(curr->left);
}
return curr->val;
}
};
本文介绍了解决在二叉树中寻找最后一行最左侧节点值的问题,提供了两种不同的算法实现方法:一种使用深度优先搜索(DFS),另一种采用广度优先搜索(BFS)策略。通过这两种方式可以有效地找到目标节点。
649

被折叠的 条评论
为什么被折叠?



