0513. 找树左下角的值
题目地址(513. 找树左下角的值)
https://leetcode-cn.com/problems/find-bottom-left-tree-value/
题目描述
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/ \
1 3
输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
7BFS
思路
其实问题本身就告诉你怎么做了
在树的最后一行找到最左边的值。
问题再分解一下
找到树的最后一行
找到那一行的第一个节点
不用层序遍历简直对不起这个问题,这里贴一下层序遍历的流程
代码
代码支持:JS,Python,Java,CPP, Go, PHP
JS Code:
Python Code:
Java:
CPP:
Go Code:
PHP Code:
复杂度分析
时间复杂度:$O(N)$,其中 N 为树的节点数。
空间复杂度:$O(Q)$,其中 Q 为队列长度,最坏的情况是满二叉树,此时和 N 同阶,其中 N 为树的节点总数
DFS
思路
树的最后一行找到最左边的值,转化一下就是找第一个出现的深度最大的节点,这里用先序遍历去做,其实中序遍历也可以,只需要保证左节点在右节点前被处理即可。 具体算法为,先序遍历 root,维护一个最大深度的变量,记录每个节点的深度,如果当前节点深度比最大深度要大,则更新最大深度和结果项。
代码
代码支持:JS,Python,Java,CPP
JS Code:
Python Code:
Java Code:
CPP:
复杂度分析
时间复杂度:$O(N)$,其中 N 为树的节点总数。
空间复杂度:$O(h)$,其中 h 为树的高度。
最后更新于
这有帮助吗?