路径总和 II
题目描述
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
1 | 给定如下二叉树,以及目标和 sum = 22, |
题解
做此题之前,可以先做一道简单版的路径总和,简单版的只要遍历全部节点,遇到满足条件的路径返回 true 即可,而此题不仅要遍历全部节点,还要记录满足条件的路径。此题是典型的回溯算法,思路就是,先声明一个LinkedList<Integer> path
保存路径,List<List<Integer>> ans
保存所有路径,我们每遍历到一个节点,就将这个节点的值保存在 path 中,当判断到子节点,如果此节点的值满足 sum 等于 val,则将 path 加入到 ans 中,否则继续进行递归遍历左右子树。注意入参 root 可能为空,另外递归的结束条件也包含节点为空。当递归回溯的时候,我们就删除最后加入到 path 中的节点。
1 | List<List<Integer>> ans = new LinkedList<>(); |
来源
文章标题:路径总和 II
文章作者:cylong
文章链接:https://0skyu.cn/posts/69f2.html
有问题或者建议欢迎在下方评论。欢迎转载、引用,但希望标明出处,感激不尽(●’◡’●)
- 本文标题:路径总和 II
- 创建时间:2020-07-07 00:03:49
- 本文链接:posts/69f2.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!