前、中、后序遍歷隨意兩種是否能確定一個二叉樹?理由? && 棧和隊列的特點和區別


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

 

由二叉樹的中序和前序遍歷序列可以唯一確定一棵二叉樹
理由:
1.前序遍歷數組中的第一個元素就是二叉樹的根節點。

2.根節點將中序遍歷數組從中間划分為左子樹部分和右子樹部分。

3.前序遍歷數組中的左子樹與右子樹的長度與中序遍歷相同,於是也一分為二。

4.遞歸。

 

由二叉樹的中序和后序遍歷序列可以唯一確定一棵二叉樹
理由:
中序是 訪問順序是
左子樹 根 右子樹

后序是

左子樹 右子樹 根

所以一棵二叉樹如果給了后序的信息 可以把樹根確定下來

帶入中序的信息中 找出左右子樹 再帶回后續的信息找這樣反復,也就是遞歸下去,可以把樹給確定下來。

 

棧和隊列數據結構的特點是:

棧特點就是一個先進后出的結構。

隊列特點就是一個先進先出的結構。

 

棧和隊列的區別是:

數據結構不同隊列先進先出,棧先進后出。

對插入和刪除操作的"限定"。 棧是限定只能在表的一端進行插入和刪除操作的線性表。
隊列是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表。

遍歷數據速度不同。棧只能從頭部取數據 也就最先放入的需要遍歷整個棧最后才能取出來內,
而且在遍歷數據的時候還得為數據開辟臨時空間,保持數據在遍歷前的一致性隊列怎不同,
他基於地址指針進行遍歷,而且可以從頭或尾部開始遍歷,但不能同時遍歷,無容需開辟臨時空間。

 

舉例說明如何用兩個棧實現隊列的入隊列操作和出隊列 操作:
入隊:將元素進棧A

出隊:判斷棧B是否為空,如果為空,則將棧A中所有元素pop,並push進棧B,棧B出棧;

如果不為空,棧B直接出棧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM