zoukankan      html  css  js  c++  java
  • 剑指Offer_24_二叉树中和为某一值的路径.md

    题目描述

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

    解题思路

    先序遍历树,当和等于指定值,且遍历到叶结点,则打印输出。

    实现

    /*树结构定义*/
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    }
    /*实现*/
    import java.util.ArrayList;
    public class Solution {
        public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
            ArrayList<ArrayList<Integer>> list = new ArrayList<>();
            ArrayList<Integer> cur = new ArrayList<>();
            findPath(root, target, list, cur, 0);
            return list;
        }
    
        private void findPath(TreeNode root, int target,
                              ArrayList<ArrayList<Integer>> list, ArrayList<Integer> cur, int sum) {
            if (root == null) return;
            sum += root.val;
            if (sum > target) return;
            if (sum == target){
                if (root.left != null || root.right != null) return;
                else {
                    cur.add(root.val);
                    ArrayList<Integer> clone = (ArrayList<Integer>)cur.clone();
                    list.add(clone);
                    sum -= root.val;
                    cur.remove(cur.size()-1);
                    return;
                }
            }
            cur.add(root.val);
            findPath(root.left,target,list,cur,sum);
            findPath(root.right,target,list,cur,sum);
            cur.remove(cur.size()-1);
            sum -= root.val;
        }
    }
    
  • 相关阅读:
    C# 后台调用webApi
    WebApi传参详解
    网络爬虫字体解密
    单元测试的简单实用
    JQuery中$.ajax()方法参数详解
    vscode HTML标签换行问题
    C#基础之Assembly 当前项目的程序集GetAssemblies
    RedisHelper
    vue setTimeout 和 this.$nextTick,BMap api
    excel 导出 OpenXml
  • 原文地址:https://www.cnblogs.com/ggmfengyangdi/p/5775690.html
Copyright © 2011-2022 走看看