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;
        }
    }
    
  • 相关阅读:
    vb combobox 用法问题总结
    VB6.0 String 用法总结
    VB6.0 GetTcpTable 使用详解
    Python 自学笔记(二)第一个程序 Hello World
    Python 自学笔记(一)环境搭建
    VB MSFlexGrid 用法
    wifi 攻破
    python核心编程-第五章-习题
    python核心编程-第五章-个人笔记
    python核心编程-第四章-习题
  • 原文地址:https://www.cnblogs.com/ggmfengyangdi/p/5775690.html
Copyright © 2011-2022 走看看