zoukankan      html  css  js  c++  java
  • 二叉树的路径和

     1 /**
     2 * Definition of TreeNode:
     3 * public class TreeNode {
     4 *     public int val;
     5 *     public TreeNode left, right;
     6 *     public TreeNode(int val) {
     7 *         this.val = val;
     8 *         this.left = this.right = null;
     9 *     }
    10 * }
    11 */
    12 public class Solution {
    13     /*
    14      * @param root: the root of binary tree
    15      * @param target: An integer
    16      * @return: all valid paths
    17      */
    18     private int sum = 0;
    19     private List<List<Integer>> result = new ArrayList<List<Integer>>();
    20     private List<Integer> path = new ArrayList<Integer>();
    21     public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) {
    22         // write your code here
    23         calculate(root, target);
    24         return result;
    25     }
    26     
    27     public void calculate(TreeNode node, int target) {
    28         if(node != null) {
    29             sum += node.val;
    30             path.add(node.val);
    31             if (sum == target && node.left == null && node.right == null) {
    32                 List<Integer> temp = new ArrayList<Integer>(path);   //拷贝path
    33                 result.add(temp);
    34                 sum -= node.val;                //回溯到父节点状态
    35                 path.remove(path.size()-1);     //回溯到父节点状态
    36                 return;
    37             }
    38             if (node.left == null && node.right == null) {
    39                 sum -= node.val;               //回溯到父节点状态
    40                 path.remove(path.size()-1);    //回溯到父节点状态
    41                 return;
    42             }
    43             calculate(node.left, target);
    44             calculate(node.right, target);
    45             sum -= node.val;                   //回溯到父节点状态
    46             path.remove(path.size()-1);        //回溯到父节点状态
    47         }
    48     }
    49 }

    代码有点乱,有待改进。 

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/neilshi/p/7802974.html
Copyright © 2011-2022 走看看