题目
题目描述
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
示例1
给定二叉树:
5 |
返回:
[ |
题解
DFS回溯
二叉树搜索问题,使用 回溯算法,先序遍历搜索节点,同时记录节点路径。
- 先序遍历: [根节点, 左子树, 右子树];
- 路径记录: 记录根节点到当前节点的路径; 1)当前节点为叶子节点; 2)节点值和为sum;
从根节点向下搜索子树:
- 路径更新: 将当前节点加入路径;
- 目标值更新: 目标值-当前值;
- 路径记录: 当该路径满足目标值,则将其路径加入到res;
- 子树遍历: 递归搜素左、右子树;
- 路径恢复: 向上回溯前,将当前节点从路径中删除。
时间复杂度:O(n),先序遍历所有节点;
空间复杂度:O(n),递归占用辅助空间O(n)。
# Definition for a binary tree node. |