給定乙個僅包含數字0-9 0−9 的二叉樹,每一條從根節點到葉子節點的路徑都可以用乙個數字表示。
例如根節點到葉子節點的一條路徑是1→2→3,那麼這條路徑就用123 來代替。
找出根節點到葉子節點的所有路徑表示的數字之和
這顆二叉樹一共有兩條路徑,
根節點到葉子節點的路徑 12
根節點到葉子節點的路徑 13
答案為 12+13=25
import
"math"
func
sumnumbers
( root *treenode )
intreturn rs
}root2leaf =
func
(root *treenode,path [
]int
)if root.left==
nil&& root.right==
nilroot2leaf
(root.left,
(path,root.val)
)root2leaf
(root.right,
(path,root.val))}
root2leaf
(root,
int)
return sum
}
def
preordersum
(root,cursum)
:if root is
none
:return
0 cursum = cursum*
10+root.val
if root.left is
none
and root.right is
none
:return cursum
return preordersum(root.left, cursum)
+preordersum(root.right, cursum)
return preordersum(root,
0)
巧思路可以省不少 前序遍歷 中序遍歷 後序遍歷 層序遍歷
根據遍歷畫圖 先根據中序和前序找到每一級的所有根 最近也是在準備筆試,由於沒有系統的學過資料結構,所以每次在考到二叉樹的遍歷的時候都是直接跪,次數多了也就怒了,前些天也是準備 沒時間整這些,現在提交了,算是稍微輕鬆點了,所以花了半天的時間來學了下二叉樹。現在記下來,以便後序查閱。一 二叉樹的遍歷概念...
樹的層序遍歷
層序遍歷的基本思路就是,1.根節點入佇列。2.根節點出隊,同時將根節點左兒子和右兒子入隊 3.結點出隊,同時將該節點的左兒子和右兒子入隊 4.重複3直到隊列為空 void layerprint struct treenode r include include fun.c struct queue ...
層序遍歷(廣度優先遍歷)
遍歷複雜度o n include include using namespace std 二分搜尋樹 template typename key,typename value class bst node root 根節點 int count 樹中的節點個數 public 建構函式,預設構造一棵空二...