二叉树中和为某一值的路径

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

package com.hk;

import java.util.ArrayList;

/**
 * @author hk
 * @version 1.0
 * @date 2020/4/2 0002 15:09
 */
public class Solution {

    private ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
    private ArrayList<Integer> list = new ArrayList<>();

    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
        if (root == null) {
            return result;
        }
        list.add(root.val);
        target -= root.val;
        if (target == 0 && root.left == null && root.right == null) {
            //因为result.add(list)是吧list这个对象的引用地址添加到result了,
            // result中的元素就会共用list,而list是我们用来存放当前路径的地方,因此我们需要复制一份之后加入result数组中
            result.add(new ArrayList<Integer>(list));
        }
        ArrayList<ArrayList<Integer>> list1=FindPath(root.left,target);
        ArrayList<ArrayList<Integer>> list2=FindPath(root.right,target);
        //回退到上一节点,继续向下搜索
        list.remove(list.size()-1);
        return result;
    }
}






展开阅读全文

Windows版YOLOv4目标检测实战:训练自己的数据集

04-26
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值