二叉树中和为某路径的值

题目:
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

思路:
最早的思路是想通过栈来实现,但是这道题每条路径都属于一个新的链表.所以这种实现方法会显得冗余.
通过递归的方式进行实现,目标的值可以通过一直递减然后直到为0,且为叶子节点来判断是否为合适的路径.

代码

public class FindPath {
    private ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
    private ArrayList<Integer> arrayList = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
         if(root == null){
             return arrayLists;
         }
        arrayList.add(root.val);
        target -= root.val;
        //target<0说明不需要在遍历了,直接返回
        if(target < 0){
            arrayList.remove(arrayList.size() - 1);
            return arrayLists;
        }
        if(target == 0 && root.left == null && root.right == null)
            arrayLists.add(new ArrayList<Integer>(arrayList));
        if(root.left != null)
            FindPath(root.left,target);
        if(root.right != null)
            FindPath(root.right,target);
        //回档
        arrayList.remove(arrayList.size()-1);
        return arrayLists;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数据结构与算法--从平衡二叉树(AVL)到红黑树 上节学习了二叉查找树。算法的性能取决于树的形状,而树的形状取决于...
    sunhaiyu阅读 7,822评论 4 32
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 1,759评论 0 7
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,712评论 0 25
  • 0. 什么是树 数据的基本单位是数据元素,在涉及到数据处理时数据元素之间的关系称之为结构,我们依据数据元素之间关系...
    安安zoe阅读 549评论 0 0
  • 自荐:理事 姓名:张敏 年龄:47 所在市:襄阳市 从事的行业:美容护肤品线上线下批发、零售,农特产品种植、加工、...
    随心远行_4516阅读 458评论 0 0

友情链接更多精彩内容