基于Go语言的二叉树中和为某一值的路径(三)-JZ84

描述

给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum。
1. 该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点
2. 总节点数目为n
3. 保证最后返回的路径个数在整形范围内(即路径个数小于2^31-1)

数据范围:

  1. 0 < = n < = 1000 0<=n<=1000 0<=n<=1000
  2. − 1 0 9 < = 节点值 < = 1 0 9 −10^{9}<=节点值<=10^{9} 109<=节点值<=109

假如二叉树root为{1,2,3,4,5,4,3,#,#,-1},sum=6,那么总共如下所示,有3条路径符合要求
在这里插入图片描述

示例1
输入:{1,2,3,4,5,4,3,#,#,-1},6
返回值:3
说明:如图所示,有3条路径符合
示例2
输入:{0,1},1
返回值:2
示例3
输入:{1,#,2,#,3},3
返回值:2

package main

import . "nc_tools"

/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @param sum int整型
 * @return int整型
 */
var res = 0

func dfs(root *TreeNode, sum int) {
    
    
	if root == nil {
    
    
		return
	}
	if sum == root.Val {
    
    
		res++
	}
	dfs(root.Left, sum-root.Val)
	dfs(root.Right, sum-root.Val)
}

func FindPath(root *TreeNode, sum int) int {
    
    
	// write code here
	if root == nil {
    
    
		return res
	}
	dfs(root, sum)
	FindPath(root.Left, sum)
	FindPath(root.Right, sum)
	return res
}

个人解题链接:
题解 | #二叉树中和为某一值的路径(三)#_牛客网

猜你喜欢

转载自blog.csdn.net/qq_40258073/article/details/143465528