樹的基本尋訪:
基本的尋訪
關於樹的各個節點們,我們共有三種訪問的方式:
Inorder, Preorder以及Postroder
1 | A 這是一棵樹 |
- 對於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 | + 這是一棵樹 |
- 如果我們走Inorder就是:3 ⟶ + ⟶ 5
- 如果我們走Preorder就是:+ ⟶ 3 ⟶ 5
- 如果我們走Postorder就是:3 ⟶ 5 ⟶ +
這根本就是一樣的概念吧!!
結尾
雖然提供了三種尋訪作為參考,但實際上我們常用Postorder,會希望先把子樹的值算出來,比較好做後續的運算。
今天先提到這裡,目前只有看到一個節點兩片葉子的總感覺有點空虛,下次我們就來實戰Inorder!