关闭

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

标签: 剑指offer-java实现牛客网在线编程二叉树数据结构
360人阅读 评论(0) 收藏 举报
分类:

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


思路:
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;
    }
}
1
0
查看评论

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

题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 输入: 每个测试案例包括n+1行: 第一行为2个整数n,k(1<=n<=10000),n表示结点的个数,k表示要求的路径和,结点编号从...
  • mmc_maodun
  • mmc_maodun
  • 2014-05-19 08:18
  • 4216

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

相当于深度搜索dfs class Solution: def dfs(self,root,s,li,listAll): li.append(root.val) if not root.left and not root.right and s==root.va...
  • a787264137
  • a787264137
  • 2017-11-28 19:41
  • 42

【刷题之路】二叉树中和为某一值的路径

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 问题难点在于, 为了确定某一条路径是否符合要求,需要走完整条路来确定是否要保留之前走的路径点 我们采取递归寻找的方法,将走过的路径全部保留,如果最后发现这条...
  • zyn2609530
  • zyn2609530
  • 2016-07-18 12:10
  • 430

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

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

[程序员面试题精选100题]4.二叉树中和为某一值的所有路径

【题目】 输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22和如下二元树           ...
  • SunnyYoona
  • SunnyYoona
  • 2014-12-17 22:21
  • 1253

剑指offer第二十四题【二叉树中和为某一值的路径】c++实现

二叉树中和为某一值的路径 参与人数:1505时间限制:1秒空间限制:32768K通过比例:21.37%最佳记录:0 ms|3156K(来自  风痕) 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点...
  • u011692312
  • u011692312
  • 2015-10-20 10:32
  • 296

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

题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的所有的结点形成一条路径。 如下图,输入二叉树和整数22,则打印出两条路径,第一条路径包含结点10,12,第二条路径包含的结点为10,5,7. 一般的数据结构和算法的教材都没有介绍树的...
  • jsqfengbao
  • jsqfengbao
  • 2015-08-05 09:08
  • 3238

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

输入二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
  • strongyoung88
  • strongyoung88
  • 2015-10-18 23:20
  • 283

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

题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 /* public class TreeNode { int val = 0; TreeNode left = null; ...
  • kangaroo835127729
  • kangaroo835127729
  • 2015-04-11 21:32
  • 657

求出二叉树中找出和为某一值的所有路径

求出二叉树中找出和为某一值的所有路径
  • a815331793
  • a815331793
  • 2013-11-22 00:31
  • 2192
    个人资料
    • 访问:155572次
    • 积分:4928
    • 等级:
    • 排名:第6843名
    • 原创:329篇
    • 转载:0篇
    • 译文:0篇
    • 评论:80条
    博客专栏
    最新评论