leetcode 513.找树左下角的值
问题描述
给定一个二叉树的 根节点 root
,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
提示:
- 二叉树的节点个数的范围是
[1,104]
-231 <= Node.val <= 231 - 1
核心思路
在树的最后一行找到最左边的值。
深度最大的叶子节点一定在最后一行。
使用前序遍历(中序,后序均可,只要左优先就行),保证优先左边搜索,然后深度更新时更新结果值,遍历完得到的就是树的最后一行最左边的值。
层序遍历比较好理解,每次遍历到新的一层,记录上第一个,也就是最左边的值,到最后一层即可。
code
深度优先搜索
1 | class Solution { |
-
时间复杂度:,其中 n 是树中的节点个数。
-
空间复杂度:。空间复杂度与深度优先搜索使用的栈的最大深度相关。在最坏的情况下,树呈现链式结构,深度为 ,对应的空间复杂度也为 。
广度优先搜索
1 | class Solution { |
-
时间复杂度:,其中 n 是树中的节点个数。
-
空间复杂度:。空间复杂度与广度优先搜索使用的队列需要的容量相关,为 。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狐狸的被窝!
评论
WalineValine