美文网首页
路径总和 III

路径总和 III

作者: 二进制的二哈 | 来源:发表于2019-12-29 18:35 被阅读0次

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/path-sum-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 {
    
        int ans = 0;
    
        public int pathSum(TreeNode root, int sum) {
            if(root != null){
                func(root,sum);
                pathSum(root.left,sum);
                pathSum(root.right,sum);
            }
            return ans;
        }
    
        private void func(TreeNode root, int sum){
            if(root == null)
                return;
            if(root.val == sum)
                ans++;
            func(root.left,sum-root.val);
            func(root.right,sum-root.val);
        }
    }
    

    相关文章

      网友评论

          本文标题:路径总和 III

          本文链接:https://www.haomeiwen.com/subject/gmfuoctx.html