首先介紹一下三種遍歷順序的操作方法:
1.先序遍歷
(1)訪問根結點;
(2)先序遍歷左子樹;
(3)先序遍歷右子樹。
2.中序遍歷
(1)中序遍歷左子樹;
(2)訪問根結點;
(3)中序遍歷右子樹。
3.后序遍歷
(1)后序遍歷左子樹。
(2)后序遍歷右子樹;
(3)訪問根結點。
知道了二叉樹的三種遍歷規則。僅僅要有中序遍歷序列和前后任一種遍歷序列,我們就能夠求出第三種遍歷序列。今天我們研究的是已知先序和中序遍歷序列。求后序遍歷序列。
已知該二叉樹的先序遍歷序列為:A-B-D-E-G-C-F,中序遍歷序列為:D-B-G-E-A-C-F。
接下來我們就能夠求出該二叉樹的后序遍歷序列。詳細過程例如以下:
第一步:先求root根節點,依據先序遍歷規則我們可知root為先序遍歷序列的第一個節點,因此該二叉樹的root節點為A。
第二步:求root的左子樹和右子樹,這點我們能夠從中序遍歷序列中找出,位於root節點A左側的D-B-G-E為root的左子樹,位於A右側的C-F為右子樹。
第三步:求root的左孩子leftchild和右孩子rightchild,leftchild為左子樹的根節點。rightchild為右子樹的根節點。我們能夠找到左子樹D-B-E-G在先序遍歷序列中的排列順序為B-D-E-G。因為先序遍歷首先訪問根節點。所以B為左子樹的根節點。即B為root的leftchild。同理root的rightchild為C。
第四步:我們能夠依據上面的步驟找到B的左子樹和右子樹,以及C的左子樹和右子樹,然后分別求出左右子樹的根節點。以此類推。僅僅要求出根節點及其leftchild和rightchild,剩下的過程都是遞歸的。最后我們就能夠還原整個二叉樹。
依據以上步驟我們求出的二叉樹例如以下圖所看到的:
最后我們就能夠依據興許遍歷規則得出該二叉樹的興許遍歷序列為:D-G-E-B-F-C-A。
還有一種情況為已知中序和后序遍歷序列求先序遍歷序列。我們將分別在后面的博客中介紹。
————————未完。待續。。。————————