根节点到某节点的路径或者到所有子节点的路径

肯定前序遍历

    /**查找根节点到某一节点的路径*/
    void findPath(TreeNode root, TreeNode target, ArrayList<TreeNode> list){
        if(root == null)
            return;
             // 把当前结点加入到路径当中来
        list.add(root);
        if(root == target){
            System.out.println("find");
            return;
        }
        if(root.left != null){
            findPath(root.left,target,list);
        }
        if(root.right != null){
            findPath(root.right,target,list);
        }

        //在返回到父节点之前,在路径上删除当前节点,这里非常重要!!!
        list.remove(list.size()-1);
    }

如果求根节点到所有子节点的路径:
添加

  ArrayList<ArrayList<TreeNode>> ls = new ArrayList<>();

更改结束条件

// 如果为叶子结点
if(root.left==null && root.right==null){
            ls.add(new ArrayList<>(list));
        }

未测试,思想如上。
参考:https://blog.csdn.net/liuyi1207164339/article/details/50908308
https://www.cnblogs.com/wjf0/p/5873902.html
https://blog.csdn.net/anoobcoder/article/details/79318932 **

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值