题解 | #打印路径 二叉树#

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

http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca

import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int expectNumber) {
        ArrayList<ArrayList<Integer>> ret = new ArrayList<>() ;
        ArrayList<Integer> path = new ArrayList<>() ;
        find(root , expectNumber , ret , path) ;
        return ret ;
    }
    public void find(TreeNode root , int exp ,  ArrayList<ArrayList<Integer>> ret ,  ArrayList<Integer> path) {
        if(root == null) {
            return ;
        }
        if(root.left == null && root.right == null) {
            if(exp == root.val) {
                path.add(root.val) ;
                ArrayList<Integer> temp = new ArrayList<>() ;
                for(Integer num : path) {
                    temp.add(num) ;
                }
                ret.add(temp) ;
                path.remove(path.size()-1) ;
                return ;
            } else {
                return ;
            } 
        } else {
            exp-=root.val ;
            path.add(root.val) ;
            if(root.left != null) {
                find(root.left , exp , ret , path) ;
            }
            if(root.right != null) {
                find(root.right , exp , ret , path) ;
            }
            path.remove(path.size()-1) ;
            return ;
        }
    }
}









一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务