• 二叉树的路径和


     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 }

    代码有点乱,有待改进。 

  • 相关阅读:
    python基础11——seek应用&文件修改
    emmm......就当练习了系列08
    python基础10——文件操作x/b模式&控制指针移动
    emmm......就当练习了系列07
    emmm......就当练习了系列06
    python基础09——文件操作
    已经free的pycharm突然"抢钱"?粗暴的搞定它!
    由于系统掉电,导致磁盘扩容时,系统进入救援模式
    关于/etc/fstab的理解
    Linux磁盘
  • 原文地址:https://www.cnblogs.com/neilshi/p/7802974.html
Copyright © 2020-2023  润新知