给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/ \
1 3
输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
7
注意: 您可以假设树(即给定的根节点)不为 NULL。
C++
/**
* 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:
void dfs(TreeNode* root, map<int,vector<int>>& tmp, int k)
{
if(root)
{
tmp[k].push_back(root->val);
dfs(root->left, tmp, k+1);
dfs(root->right,tmp, k+1);
}
}
int findBottomLeftValue(TreeNode* root)
{
map<int,vector<int>> tmp;
dfs(root, tmp, 1);
int res=0;
int count=0;
for(auto it:tmp)
{
if(it.first>count)
{
res=it.second[0];
}
}
return res;
}
};
python
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def dfs(self, tmp, root, k):
if root:
if k not in tmp:
tmp[k]=[root.val]
else:
tmp[k].append(root.val)
self.dfs(tmp,root.left,k+1)
self.dfs(tmp,root.right,k+1)
def findBottomLeftValue(self, root: TreeNode) -> int:
tmp={}
self.dfs(tmp,root,1)
count=0
res=0
for key in tmp:
if key>count:
res=tmp[key][0]
return res