• 437. 路径总和 III


    给定一个二叉树,它的每个结点都存放着一个整数值。

    找出路径和等于给定数值的路径总数。

    路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

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

    示例:

    root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8

    10
    /
    5 -3
    /
    3 2 11
    /
    3 -2 1

    返回 3。和等于 8 的路径有:

    1. 5 -> 3
    2. 5 -> 2 -> 1
    3. -3 -> 11

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/path-sum-iii

     1 package leetCode.binaryTree;
     2 
     3 public class PathSumIII {
     4     static class TreeNode{
     5         int val;
     6         TreeNode left;
     7         TreeNode right;
     8         TreeNode(int x) {
     9             val = x;
    10         }
    11     }
    12     //pathSum:对于一个节点来说,路径和可以分为3个部分,包含该节点的路径和、不包含该节点的左、右子树是否存在该路径和
    13     //hasPath:对于查找是否存在该路径和也为一个递归过程,但寻找的是包含该节点的路径
    14     public int pathSum(TreeNode root, int sum) {
    15         if(root == null) {
    16             return 0;
    17         }    
    18         int res = 0;
    19         res = hasPath(root, sum);
    20         res += pathSum(root.left, sum);
    21         res += pathSum(root.right,sum);
    22         return res;
    23     } 
    24     public static int hasPath(TreeNode node, int sum) {
    25         if(node == null) {
    26             return 0;
    27         }
    28         int num = 0;
    29         if(node.val == sum) {
    30             num += 1;
    31         }
    32         num += hasPath(node.left, sum - node.val);
    33         num += hasPath(node.right, sum - node.val);
    34         return num;
    35     }
    36 }
    无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
  • 相关阅读:
    深度解析U-Boot网络实现(长篇好文)
    优化嵌入式Linux的启动时间之内核
    优化嵌入式Linux的启动时间之文件系统
    Java安全之 ClassLoader类加载器
    Java 审计之xss审计要点
    Java审计之命令执行篇
    Java审计之文件操作漏洞
    Java 审计 之过滤器防御xss
    Java 审计之SSRF篇(续)
    Java 审计之SSRF篇
  • 原文地址:https://www.cnblogs.com/xiyangchen/p/11074528.html
Copyright © 2020-2023  润新知