leetcode 437.Path Sum III (路径和III)

You are given a binary tree in which each node contains an integer value.

Find the number of paths that sum to a given value.

The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

Example:

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

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

Return 3. The paths that sum to 8 are:
1.  5 -> 3
2.  5 -> 2 -> 1
3. -3 -> 11

给出一棵二叉树,找出得到给定值的路径数
路径可以从任意节点开始,但是必须是向下走的

思路:
两个函数,一个遍历所有节点,一个遍历以当前节点为root的子树

遍历以当前节点为root的函数:
root值如果等于target值,那么直接path++
中序遍历,遍历左右子树的时候,和变为sum-root.val

遍历所有节点:
中序遍历所有节点

class Solution {
    int count = 0;
    public int pathSum(TreeNode root, int sum) {
        if (root == null) {
            return 0;
        }
        
        getSum(root, sum);
        pathSum(root.left, sum);
        pathSum(root.right, sum);
        
        return count;
    }
    
    public void getSum(TreeNode root, int sum) {
        if (root == null) {
            return;
        }
        
        if (root.val == sum) {
            count ++;
        }
        
        getSum(root.left, sum - root.val);
        getSum(root.right, sum - root.val);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值