如何根據前序、中序、後序遍曆還原二叉樹__資料結構區

來源:互聯網
上載者:User

面試題目或多或少會出現這樣的選擇題或者簡答題:

首先我們得知道概念:

前序走訪:先訪問當前節點,再訪問當前節點的左子樹,最後訪問當前節點的右子樹。對於二叉樹,深度遍曆與此同。規律:根在前;子樹在根後且左子樹比右子樹靠前,且第一個就是根節點;

中序遍曆:先訪問當前節點的左子樹,然後訪問當前節點,最後是當前節點的右子樹,二叉樹,中序遍曆會得到資料升序效果。規律:根在中;左子樹在跟左邊,右子樹在根右邊,左邊部分是根結點的左子樹的中序遍曆序列,右邊部分是根結點的右子樹的中序遍曆序列 ;

後序遍曆:先訪問當前節點的左子樹,然後是當前節點的又子樹,最後是當前節點。規律:根在後;子樹在根前且左子樹比右子樹靠前,且最後一個節點是根節點。


一、前序+中序

1. 根據前序序列的第一個元素建立根結點;
2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;
3. 在前序序列中確定左右子樹的前序序列;
4. 由左子樹的前序序列和中序序列建立左子樹;
5. 由右子樹的前序序列和中序序列建立右子樹。

如:已知一棵二叉樹的先序遍曆序列和中序遍曆序列分別是abdgcefh、dgbaechf,求二叉樹及後序遍曆序列。

先序:abdgcefh--->a  bdg cefh

中序:dgbaechf---->dgb a echf

得出結論:a是樹根,a有左子樹和右子樹,左子樹有bdg結點,右子樹有cefh結點。

先序:bdg--->b  dg

中序:dgb --->dg b

得出結論:b是左子樹的根結點,b無右子樹,有左子樹。

先序:dg---->d  g

中序:dg----->dg

得出結論:d是b左子樹的根節點,d無左子樹,g是d的右子樹

然後對於a 的右子樹類似可以推出

最後還原:                                            a

                                      b                                                 c

               d                                                       e                                f

                     g                                                                      h

後序遍曆:gdbehfca

二、後序+中序:

已知一棵二叉樹的後序序列和中序序列,構造該二叉樹的過程如下:
1. 根據後序序列的最後一個元素建立根結點;
2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;
3. 在後序序列中確定左右子樹的後序序列;
4. 由左子樹的後序序列和中序序列建立左子樹;
5. 由右子樹的後序序列和中序序列建立右子樹

如還是上面題目:如:已知一棵二叉樹的後序遍曆序列和中序遍曆序列分別是gdbehfca、dgbaechf,求二叉樹

後序:gdbehfca---->gdb ehfc  a

中序:dgbaechf----->dgb a echf

得出結論:a是樹根,a有左子樹和右子樹,左子樹有bdg結點,右子樹有cefh結點。

後序:gdb---->gd  b

中序:dgb----->dg  b

得出結論:b是a左子樹的根節點,無右子樹,有左子樹dg。

後序:gd---->g  d

中序:dg----->d g

得出結論:d是b的左子樹根節點,g是d的右子樹。

然後對於a 的右子樹類似可以推出。然後還原。

三、前序+後序

前序和後序在本質上都是將父節點與子結點進行分離,但並沒有指明左子樹和右子樹的能力,因此得到這兩個序列只能明確父子關係,而不能確定一個二叉樹。 故此法無。不能唯一確定一個二叉樹。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.