二叉树中和为某一值的路径(一)
JZ82 二叉树中和为某一值的路径(一)
描述
给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。
- 该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
- 叶子节点是指没有子节点的节点
- 路径只能从父节点到子节点,不能从子节点到父节点
- 总节点数目为n
例如:
给出如下的二叉树, $sum=22$,
返回true,因为存在一条路径 $5\rightarrow 4\rightarrow 11\rightarrow 25\rightarrow 4\rightarrow 11\rightarrow 2$的节点值之和为 22
数据范围:
树上的节点数满足 $0≤n≤10000$
每个节点的值都满足 $∣val∣≤1000$
要求:空间复杂度 $O(n)$,时间复杂度 $O(n)$
进阶:空间复杂度 $O(树的高度)$,时间复杂度 $O(n)$
示例1
1 | 输入:{5,4,8,1,11,#,9,#,#,2,7},22 |
示例2
1 | 输入:{1,2},0 |
示例3
1 | 输入:{1,2},3 |
示例4
1 | 输入:{},0 |
题解
初见思路:今晚第六道题本来以为做个简单下班了,结果做昏头了,没注意到要求从根到叶子节点,用两个队列层序遍历磨磨叽叽半天做出来一看不对,直接用栈、递归做$BFS$就行了,烂。
1 | /** |