層序遍歷的巧用

2021-10-09 18:03:33 字數 1132 閱讀 3531

給定乙個僅包含數字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 建構函式,預設構造一棵空二...