二叉树中和为某一值的路径
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
题解
-
回溯
-
算法思想:
- 利用递归先序遍历二叉树,使用一个 pathlist 将经过的节点的值加入到 pathlist 中,返回的时候移除
- 当节点没有左右子节点且 list 中值的和为 sum 时,将 pathlist 加入到 list 中
- 返回的时候移除加入的节点(此处也可以利用局部变量,就不用减)
-
复杂度分析
- 时间复杂度 O(n):二叉树的节点个数
- 空间复杂度 O(n):最坏的情况退化为单链表
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution
-