【例子】
給定二叉樹先序和中序
先序數列:abdghcefi
中序數列:gdhbaecif
(1)先序序列的第乙個值為根節點:a為根節點
(2)再到中序數列中找到根節點,以根節點a為界分為左右兩部分,左:gdhb、右:ecif
(3)在先序序列找到與中序數列左右部分對應的序列部分,左:bdgh、右:cefi,可得到左邊結點為b,右邊結點為c
(4)分別對左子樹和右子樹進行上述操作,左子樹(先序:cefi,中序:ecfi)以c為界限分為 左:e、右:if,因為先序序列f在i前所以f在i上一層,因為中序數列i在f前面,所以i在左分支;右子樹(先序:bdgh,中序:gdhb)以b為界限分為左:gdh,因為先序中d在第乙個,所以d為第乙個結點針對(先序:dgh,中序:gdh)重複上述方法可得:
堆疊資料結構區別
堆:堆可以被看成是一棵樹,如:堆排序。
棧:一種先進後出的資料結構。
堆疊作業系統的區別
棧:編譯器自動分配和釋放,
堆:程式設計師手動分配和釋放,若忘記delete,容易產生記憶體洩漏。
棧:記憶體空間是連續的,先進後出的方式保證不會產生零碎的空間
堆:記憶體空間不連續,從而造成大量的碎片,使程式效率降低
堆:動態分配,手動釋放
棧:靜態分配和動態分配。靜態分配是編譯器完成的,比如區域性變數的分配。動態分配由alloca函式進行分配,
由編譯器進行釋放。
棧的效率比較高,堆的效率比棧要低得多。
資料結構 面試題
python實現 寫個大概,import re def quick sort alist,first,last if first last return mid value alist first low first high last while low high while low mid va...
資料結構 面試題
2.棧2.2使用棧計算字尾表示式 2.3對棧的元素進行排序 2.4判斷表示式是否括號平衡 3.佇列 4.鍊錶 5.樹6.圖 7.字典樹 這是一種高效的樹形結構,但值得單獨說明 8.雜湊表 雜湊表 1.1 尋找陣列中第二小的元素 思路 公升序排序之後,輸出第二個數字 1.2 找到陣列中第乙個不重複出現...
mysql資料結構面試題 MySQL 面試題
mysql 的一些面試題,有的是平時聊到的,有的是聽別人說的,有的是工作中遇到的,特此彙總一下,有問有答。一條 sql 查詢語句執行流程?1 聯結器。客戶端和伺服器 tcp 握手後,驗證使用者名稱密碼。使用者名稱密碼通過後,聯結器會到許可權表中查詢你擁有的許可權。之後這個連線裡面的許可權判斷邏輯,都...