2019 面試 資料結構

2021-10-01 05:12:31 字數 854 閱讀 8895

二叉樹是資料結構中一種重要的資料結構,也是樹表家族最為基礎的結構。

二叉樹的定義:二叉樹的每個結點至多只有二棵子樹(不存在度大於2的結點)++++,二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2i-1個結點;深度為k的二叉樹至多有2k-1個結點;對任何一棵二叉樹t,如果其終端結點數為n0,度為2的結點數為n2,則n0=n2+1。

***一棵深度為k且有2k-1(2的k次冪減1)個結點的二叉樹稱為滿二叉樹。**********深度為k的完全二叉樹,至少有2k-1個葉子節點,至多有2k-1個節點。***

二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。

二叉樹遍歷方式分為三種:先序,中序和後序。

可以以根節點的位置為參考來記遍歷方式,在第乙個為先序,中間為中序,最後為後序;

即:先序: 根左右;中序:左根右;後序:左右根。

陣列的搜尋比較方便,可以直接用下標,但刪除或者插入某些元素就比較麻煩。

鍊錶與之相反,刪除和插入元素很快,但查詢很慢。

二叉排序樹就既有鍊錶的好處,也有陣列的好處。

在處理大批量的動態的資料是比較有用。

檔案系統和資料庫系統一般都採用樹(特別是b樹)的資料結構資料,主要為排序和檢索的效率。二叉樹是一種最基本最典型的排序樹,用於教學和研究樹的特性,本身很少在實際中進行應用,因為缺點太明顯了

面試 資料結構

先給出定義部分和相關除錯部分 include h using namespace std struct listnode head listnode insert int v while p next null p p next p next new listnode p p next p next...

資料結構 面試

看了劍指offer發現乙個問題有好多種思路去解決,之前自己考慮的都太普遍性,應當多樣化的來思考問題 最深體會 寫出實現功能的 和寫出優異的 是兩回事!1.鍊錶的倒敘列印 1 是否可以改變鍊錶結構,可以改變就改變以後列印 2 不允許改變鍊錶結構可以直接使用迴圈,但是時間複雜度會是o n 3 使用棧來儲...

《面試》資料結構 python

思想 只限定在資料棧的一端 棧頂 進行元素的操作,是一種特殊的線性表。操作例項 二進位制轉換十進位制 class structure object deftwooten self,l m i len l while i 0 n l i 1 pow 2,len l i i i 1 print sum ...