如何解析python二叉樹(shù)中的路徑總和,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、阜康網(wǎng)站維護(hù)、網(wǎng)站推廣。
給定一個(gè)二叉樹(shù),它的每個(gè)結(jié)點(diǎn)都存放著一個(gè)整數(shù)值。
找出路徑和等于給定數(shù)值的路徑總數(shù)。
路徑不需要從根節(jié)點(diǎn)開(kāi)始,也不需要在葉子節(jié)點(diǎn)結(jié)束,但是路徑方向必須是向下的(只能從父節(jié)點(diǎn)到子節(jié)點(diǎn))。
二叉樹(shù)不超過(guò)1000個(gè)節(jié)點(diǎn),且節(jié)點(diǎn)數(shù)值范圍是 [-1000000,1000000] 的整數(shù)。
示例:
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
解題思路:
1,此問(wèn)題可以拆分成子問(wèn)題:從根節(jié)點(diǎn)開(kāi)始路徑和等于某數(shù)的路徑個(gè)數(shù)
2,將所有節(jié)點(diǎn)為根的個(gè)數(shù)和起來(lái)
3,以某節(jié)點(diǎn)為根的路徑和包括多種情況
A,包括和為0的子路徑
B,不包括
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func pathSum(root *TreeNode, sum int) int {
count:=sumRoot(root,sum)
if root!=nil{
count+=pathSum(root.Left,sum)
count+=pathSum(root.Right,sum)
}
return count
}
func sumRoot(root*TreeNode,sum int)int{
if root==nil{
return 0
}
if root.Val==sum{
return 1 +sumRoot(root.Left,sum-root.Val)+sumRoot(root.Right,sum-root.Val)
}
return sumRoot(root.Left,sum-root.Val)+sumRoot(root.Right,sum-root.Val)
}
看完上述內(nèi)容,你們掌握如何解析python二叉樹(shù)中的路徑總和的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!