zoukankan      html  css  js  c++  java
  • 路径总和,双重递归

    题目来自:

    https://leetcode-cn.com/problems/path-sum-iii/

    给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

    二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。

    思路

    1.以10为根节点,向下寻找,寻找的路径为10->5->3->3,10->5->3->-2,10->5->2->1,...,其中不重复的部分是先序遍历,故对一个固定的根节点,使用先序寻找路径,使用sum减去根值来查找路径

    2.以哪个为根节点,10->5->3->3,10->5->3->-2,10->5->2->1,...,同样是先序遍历

    3.将路径数作为一个全局变量,存放路径数

    双重递归

     1 int total = 0;
     2     public int pathSum(TreeNode root, int sum) {
     3         if(root == null) return 0;
     4         find(root, sum);
     5         pathSum(root.left, sum);
     6         pathSum(root.right, sum);
     7         return total;
     8     }
     9     private void find(TreeNode root, int sum){
    10         if(root == null) return;
    11         sum -= root.val;
    12         if(sum == 0) total ++;
    13         find(root.left, sum);
    14         find(root.right, sum);
    15     }

    为了得到而努力

    2019-04-12

    转载请注明来处

  • 相关阅读:
    php实现中文反转字符串的方法
    冒泡排序
    mac 安装ngnix
    二维数组排序可以用php内置函数
    mysql 利用explain 优化
    Jquery Datatable
    SSL证书(HTTPS)背后的加密算法
    HTTPS的误解(二)
    HTTPS的误解(一)
    电子商务信息安全与信任解决方案
  • 原文地址:https://www.cnblogs.com/malw/p/10698724.html
Copyright © 2011-2022 走看看