1. 程式人生 > 實用技巧 >swift演算法題:二叉樹根節點到葉子節點的所有路徑和

swift演算法題:二叉樹根節點到葉子節點的所有路徑和

給定一個僅包含數字0−9的二叉樹,每一條從根節點到葉子節點的路徑都可以用一個數字表示。

例如根節點到葉子節點的一條路徑是1→2→3,那麼這條路徑就用123來代替。找出根節點到葉子節點的所有路徑表示的數字之和

例如: 1

2 3

這顆二叉樹一共有兩條路徑,根節點到葉子節點的路徑1→2用數字12代替,根節點到葉子節點的路徑1→3用數字13代替,所以答案是12+13=25

//到某一個葉子結點的路徑只有一個,那麼也就是所有葉子結點的路徑之和
func sumNumber(rootNode:TreeNode<Int>) -> Int{
    let temp :Int = 0
var sum = 0 leafnum(node: rootNode, path_num: temp, sum: &sum) return sum } func leafnum(node:TreeNode<Int>?,path_num:Int,sum:inout Int){ var temp = 0 if let root = node { temp = path_num * 10 + root.value leafnum(node: root.leftNode, path_num: temp, sum:
&sum) leafnum(node: root.rightNode, path_num: temp, sum: &sum) if root.leftNode == nil && root.rightNode == nil{ sum = sum + temp } } }