剑指offer--二叉树中和为某一值的路径

原创 2017年05月23日 21:57:53

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


思路:
1. 如果根节点为空或根节点的值大于target则返回空,
2. 否则进入寻找路径的函数,如果根结点的值等于target那么判断如果右子树为空则把根节点的值假如path,反之清空path。
3.若根结点的值不等于target,那么复制path数组到rightpath,之后用path递归执行左子树,rightpath递归执行右子树。


AC代码:

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

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

    }

}
*/
public class Solution {

    public void findpath(TreeNode root,int target,ArrayList<ArrayList<Integer>> paths,ArrayList<Integer> path){
        if(root == null || root.val > target){
            path.clear();
        }else if(root.val == target){
            if(root.left == null && root.right == null){
                path.add(root.val);
                paths.add(path);
            }else{
                path.clear();
            }
        }else{
            path.add(root.val);
            ArrayList<Integer> rightpath = new ArrayList<>();
            rightpath.addAll(path);
            target -= root.val;
            findpath(root.left, target, paths,path);
            findpath(root.right, target, paths,rightpath);
        }
    }

    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
        ArrayList<Integer> path = new ArrayList<>();
        ArrayList<ArrayList<Integer>> paths = new ArrayList<>();
        if(root == null || root.val > target){
            return paths;
        }
        findpath(root, target,paths,path);
        return paths;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。若需转载,请注明http://blog.csdn.net/qq_30091945 举报

相关文章推荐

【剑指offer】二叉树中和为某一值的路径

题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 输入: 每个测试案例包括n+1行: 第一行为2...

【剑指offer】二叉树中和为某一值得路径 java

路径为从根节点到叶节点一条路径,路径经过的各节点数值之和等于某一给定数值,则打印路径上的节点 因为需要打印满足条件的路径节点信息和各节点之和,需要栈记录经过的节点,和一个保存数值之和的变量用前序遍历...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

剑指offer——二叉树中和为某一值的路径

题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:由于是从根节点开始遍历的,所以自然联想到前序...

《剑指offer》二叉树中和为某一值的路径

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

剑指offer-二叉树中和为某一值的路径

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

剑指offer(26):二叉树中和为某一值的路径

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

剑指Offer——(24)二叉树中和为某一值的路径

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

剑指offer-二叉树中和为某一值的路径

题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路 通过先序遍历树节点,通过栈的方式来回溯解法一...

【剑指offer】Q25:二叉树中和为某一值的路径

说明:最烦的就是看别人的博客,题解里直接上代码,一行分析都没有,不过这个题。。。 class BTNode(): def __init__(self, val = -1): self.val =...

【剑指Offer】二叉树中和为某一值的路径

问题描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。算法分析 如果 root 等于 输入数,将root放...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)