題目連結:
給定一二元樹的中序以及後序探訪的排列,求此二元樹前序探訪的排列。
此樹的每個節點用相異的大寫字母標記,保證不超過八個節點。
先複習一下二元樹的前序、中序、後序探訪,它們的遞迴式依序是:
根節點 → 左子樹 → 右子樹 和
左子樹 → 根節點 → 右子樹 與
左子樹 → 右子樹 → 根節點
因此,我們可以看出後序排列的最後一個節點即是整棵樹的根節點。以範例測資為例,中序是 BADC 、後序是 BDCA ,因此:
A 是整棵樹的根節點、 B 是左子樹、 DC 是右子樹。
遞迴求左子樹得左子樹的根節點為 B ;
遞迴求右子樹得右子樹的根節點為 C 、 右子樹的左子樹為 D 。
遞迴求右子樹的左子樹得其根節點為 D 。
因此,前序探訪為 ABCD 。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。