• Java实现 LeetCode 437 路径总和 III(三)


    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
    
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
      public int pathSum(TreeNode root, int sum) {
            int [] nums = new int[1000] ;
            return pathways(root,nums,0,sum);
        }
    
        private int pathways(TreeNode root,int[]arr,int level,int sum)
        {
            if(root==null)
            {
                return 0 ;
            }
            int n = 0 ;
            arr[level] = root.val ;
            int a = sum ;
            int l = arr.length ;
            for(int j =level;j>=0;j--)
            {
                a -= arr[j] ;
                if(a==0)
                {
                    n++;
                }
            }
            return n + pathways(root.left,arr,level+1,sum) + pathways(root.right,arr,level+1,sum);
        }
    }
    
  • 相关阅读:
    Java SE
    Java SE
    Java SE
    Java SE
    Vocabulary: dockyard
    Vocabulary: Intercept
    Java SE
    MVG
    相关学习
    相机开发
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946479.html
Copyright © 2020-2023  润新知