513.找树左下角的值
https://leetcode-cn.com/problems/find-bottom-left-tree-value/
题目描述
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/ \
1 3
输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
7
注意: 您可以假设树(即给定的根节点)不为 NULL。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法 1:层次遍历
思路
按照题目意思我们只需要找到最后一层,返回最左边的节点即可。
所以只要对二叉树进行层次遍历,等遍历到最后一层的时候,返回第一个节点。

伪代码
层次遍历模板 1:
层次遍历模板 2:
代码(JavaScript/Python/C++)
JavaScript Code
Python Code
JavaScript Code
C++ Code
复杂度分析
时间复杂度:$O(N)$,其中 N 为节点数。
空间复杂度: $O(q)$,q 为队列长度。最坏情况是满二叉树,此时 q 为 $2/N$,即为 $O(N)$,N 为二叉树节点数。
方法 2:DFS
思路
想一下递归的路线,如果我们先递归遍历左子树再遍历右子树,那么每遍历到新一层的时候,都是先访问最左边的节点。

所以我们只需要在遍历到新一层的时候,记录第一个节点。
用
depth来记录当前层次,用maxDepth来记录已经遍历过的最深层次,当depth > maxDepth的时候,说明遍历到了新层次:记录第一个节点的值
更新
maxDepth
伪代码
复杂度分析
时间复杂度:$O(N)$,其中 N 为节点数。
空间复杂度:$O(h)$,其中 $h$ 为树的深度,最坏的情况 $h$ 等于 $N$,其中 N 为节点数,此时树退化到链表。
代码(JavaScript/Python/C++)
JavaScript Code
Python Code
C++ Code
Last updated
Was this helpful?