0%

Tree Triversal

樹的基本尋訪:

基本的尋訪

關於樹的各個節點們,我們共有三種訪問的方式:
Inorder, Preorder以及Postroder

1
2
3
   A          這是一棵樹
/ \
B C 但我畫不好所以歪歪的嘻嘻
  • 對於Inorder:BAC(只有二元樹有inorder!!!)
  • 對於Preorder:ABC
  • 對於Postorder:BCA

好像有點眼熟???

可以聯想到之前教過的infix, prefix, postfix,我們將operator推到左邊或右邊,再放入堆疊(Stack)中做一連串的操作
這邊也是唷樣的道理,我們把leaf放入數字,在node放上operator(之前還沒有筆記的習慣,找時間補!)

這樣484還是有點難理解啊?好啦我舉個例

堆疊與樹-類別實例

我今天把上面的ABC拿來放入運算式,我想要算3+5,A是加號+,B是3,C是5 ,這棵樹就會變成這樣:

1
2
3
   +          這是一棵樹
/ \
3 5 我仍然畫不好所以還是歪歪的嗚
  • 如果我們走Inorder就是:3 ⟶ + ⟶ 5
  • 如果我們走Preorder就是:+ ⟶ 3 ⟶ 5
  • 如果我們走Postorder就是:3 ⟶ 5 ⟶ +

這根本就是一樣的概念吧!!

結尾

雖然提供了三種尋訪作為參考,但實際上我們常用Postorder,會希望先把子樹的值算出來,比較好做後續的運算。

今天先提到這裡,目前只有看到一個節點兩片葉子的總感覺有點空虛,下次我們就來實戰Inorder!