LeetCode(合集) 路径总和(二叉树) golang copy的值复制
生活随笔
收集整理的這篇文章主要介紹了
LeetCode(合集) 路径总和(二叉树) golang copy的值复制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
112. 路徑總和
給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等于目標和。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22,
返回 true, 因為存在目標和為 22 的根節點到葉子節點的路徑 5->4->11->2。
Code
func hasPathSum(root *TreeNode, sum int) bool {if root == nil {return false}if root.Val == sum && root.Left == nil && root.Right == nil{return true}return hasPathSum(root.Left, sum-root.Val) || hasPathSum(root.Right, sum-root.Val) }113. 路徑總和 II
給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等于給定目標和的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定如下二叉樹,以及目標和 sum = 22,
返回:
[
[5,4,11,2],
[5,8,4,5]
]
Code
var res [][]int func pathSum(root *TreeNode, sum int) [][]int {res = [][]int{}dfs(root, sum, []int{})return res }func dfs(root *TreeNode, sum int, stack []int) {if root == nil {return}stack = append(stack, root.Val)if root.Left == nil && root.Right == nil {if sum == root.Val {r := make([]int, len(stack))copy(r, stack)res = append(res, r)}}dfs(root.Left, sum-root.Val, stack)dfs(root.Right, sum-root.Val, stack) }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 -> 11Code
func pathFrom(root *TreeNode, sum int) int {if root == nil { return 0 }cnt := 0 if root.Val == sum { cnt++ }cnt += pathFrom(root.Left, sum-root.Val)cnt += pathFrom(root.Right, sum-root.Val)return cnt }func pathSum(root *TreeNode, sum int) int {if root == nil { return 0 }return pathFrom(root, sum) + pathSum(root.Left, sum) + pathSum(root.Right, sum) }總結
以上是生活随笔為你收集整理的LeetCode(合集) 路径总和(二叉树) golang copy的值复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都大熊猫繁育研究基地一定要带身份证吗
- 下一篇: 114. 二叉树展开为链表 golang