推 mi981027: 可以簡單看看這幾種方法的差別 09/21 06:31
→ mi981027: inorder是先往左走,再看值,再往右走 09/21 06:31
→ mi981027: preorder是先看值,再往左,再往右 09/21 06:31
→ mi981027: 所以假設今天想刪掉node a底下的subtree, 使用inorder 09/21 06:31
→ mi981027: 走的話就會變成,明明已經traverse到那個點了,卻一路 09/21 06:31
→ mi981027: 往左繼續走,而不是直接刪掉 09/21 06:31
→ mi981027: 但用preorder來走,只要一看發現經過node a了,就可以 09/21 06:31
→ mi981027: 直接刪掉了 09/21 06:31
→ Aa841018: 那level order呢?應該就沒有必須一直往下走的問題了 09/21 06:46
推 mi981027: 我的想法是這樣的,有錯還請指正 09/21 08:17
→ mi981027: 因為binary tree分成array跟用pointer做linking的建法 09/21 08:17
→ mi981027: 通常只有complete binary tree才會使用array來建構 09/21 08:17
→ mi981027: 一般情況都是建一個struct node, 以pointer的方式實現 09/21 08:17
→ mi981027: 這種情況下除非是新增sibling link,不然根本很難做到le 09/21 08:17
→ mi981027: vel order的traversal 09/21 08:17
推 DLHZ: 推 09/21 10:09
推 joey11121: 借問個,那為什麼preorder還是比postorder適合呢? 09/21 18:22
→ DLHZ: 原因一樣吧 我能早點取就早點結束 09/21 19:41
推 joey11121: 了解了,感謝樓上 09/21 20:01
→ Aa841018: 謝謝m大解說 09/21 21:33