資料結構與演算法學習之二叉樹的遍曆:已知先序、中序、後序序列三者中的兩種求另外一種遍曆的演算法

來源:互聯網
上載者:User

初學資料結構,已經掌握了先序、中序和後序遍曆的演算法。但是看到有的筆試題有這樣一種問題“已知先序、中序、後序序列三者中的兩種求另外一種遍曆”,挺有意思的,現在來總結一下:

三種遍曆序列,已知兩種,求第三種,我們下面分類討論一下:

1)已知先序和中序,求後序

我們來舉個簡單的例子,先序序列為:ABDECF,中序序列為:DBEAFC。

演算法思想:先序遍曆樹的規則為中左右,可以看到先序遍曆序列的第一個元素必為樹的根節點,比如上例中的A就為根節點。再看中序遍曆為:左中右,再根據根節點A,可知左子樹包含元素為:DBE,右子樹包含元素:FC。然後遞迴的 進行左子樹的求解(左子樹的先序為:BDE,中序為:DBE),遞迴的進行右子樹的求解(即右子樹的先序為:CF,中序為:FC)。如此遞迴到沒有左右子樹為止。

2)已知先序和後序,求中序

同樣舉上面的例子,先序序列為:ABDECF,後序序列為:DEBFCA。

此種情況是不可唯一確定解的,只能確定根節點,而對於左右子樹的組成不確定。

2)已知中序和後序,求先序

同樣舉上面的例子,中序序列為:DBEAFC,後序序列為:DEBFCA。

演算法思想:同樣採用分段遞迴的思想解決。由後序序列知道最後一個節點一定是根節點,此處為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.