のみ0-9の数字を含むバイナリツリーが与えられると、各ルート・ツー・リーフパス番号を表すことができます。
例は、数123を表すルート・ツー・リーフパス1-> 2-> 3です。
すべてのルート・ツー・葉の数の合計を検索します。
注:葉は子を持たないノードです。
例:
入力:[1,2,3]
1
/
2 3
出力:25
説明:
ルート・ツー・リーフパス1-> 2数12表す
ルート・ツー・リーフパス1-> 3は数13を表します。
したがって、合計= 12 + 13 = 25
例2:
入力:[4,9,0,5,1]
4
/
9 0
/
5 1
出力:1026
説明:
ルート・ツー・リーフパス-4-> 9-> 5は、数495を表す
ルート・ツー・リーフ経路4-> 9-> 1は、数491を表す
ルート・ツー・リーフ経路4-> 0は、数40を表す
和が= 495 + 491 + 40 = 1026したがって。
func sumNumbers(root *TreeNode) int {
if root == nil {
return 0
}
res := 0
dfs(root, 0, &res)
return res
}
func dfs(curr *TreeNode, path int, paths *int) {
if curr.Left == nil && curr.Right == nil {
fmt.Println()
*paths += path*10+curr.Val
}
if curr.Left != nil {
dfs(curr.Left, path*10+curr.Val, paths)
}
if curr.Right != nil {
dfs(curr.Right, path*10+curr.Val, paths)
}
}