给定一个二叉树,在树的最后一行找到最左边的值。
示例 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;
}
};