剑指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(13)-二叉树中和为某一值的路径

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

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

题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 分析如下: 例如上图和整数18。第一条路径8,4,6。第二...
  • gogoky
  • gogoky
  • 2016年06月09日 21:23
  • 947

【剑指Offer面试编程题】题目1368:二叉树中和为某一值的路径--九度OJ

这道题目的思路应该还是比较清晰的,首先DFS是基础,然后在DFS过程中记录过经过的节点,并注意更新路径的和值,当然也需要动态的维护好经过节点的序列,注意增删,也即访问的时候需要增,当需要往回撤时需要删...

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

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 思路: 对于树的遍历一般就是深度遍历和广度遍历下四种中...
  • snow_7
  • snow_7
  • 2016年07月19日 17:25
  • 1317

剑指Offer面试题25(Java版):二叉树中和为某一值的路径

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

剑指Offer:面试题25——二叉树中和为某一值的路径(java实现)

问题描述: 输入一棵二叉树和一个整数,打印出二叉树中结点指的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下: public class Tr...

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

题目: 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 基本思想: 规律:...

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

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

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

class BinaryTreeNode { int value; BinaryTreeNode leftNode; BinaryTreeNode rightNode; } //题目:输入一个...

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

问题描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。算法分析 如果 root 等于 输入数,将root放...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指offer--二叉树中和为某一值的路径
举报原因:
原因补充:

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