mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-31 16:14:39 +08:00
59 lines
1.2 KiB
Markdown
Executable File
59 lines
1.2 KiB
Markdown
Executable File
# [112. Path Sum](https://leetcode.com/problems/path-sum/)
|
||
|
||
|
||
## 题目
|
||
|
||
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
|
||
|
||
**Note**: A leaf is a node with no children.
|
||
|
||
**Example**:
|
||
|
||
Given the below binary tree and `sum = 22`,
|
||
|
||
5
|
||
/ \
|
||
4 8
|
||
/ / \
|
||
11 13 4
|
||
/ \ \
|
||
7 2 1
|
||
|
||
return true, as there exist a root-to-leaf path `5->4->11->2` which sum is 22.
|
||
|
||
## 题目大意
|
||
|
||
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。
|
||
|
||
|
||
## 解题思路
|
||
|
||
- 递归求解即可
|
||
|
||
|
||
|
||
## 代码
|
||
|
||
```go
|
||
|
||
package leetcode
|
||
|
||
/**
|
||
* Definition for a binary tree node.
|
||
* type TreeNode struct {
|
||
* Val int
|
||
* Left *TreeNode
|
||
* Right *TreeNode
|
||
* }
|
||
*/
|
||
func hasPathSum(root *TreeNode, sum int) bool {
|
||
if root == nil {
|
||
return false
|
||
}
|
||
if root.Left == nil && root.Right == nil {
|
||
return sum == root.Val
|
||
}
|
||
return hasPathSum(root.Left, sum-root.Val) || hasPathSum(root.Right, sum-root.Val)
|
||
}
|
||
|
||
``` |