樹和二叉樹
樹的定義
樹是n(n≥0)個結點的有限集合。若n=0,則稱為空樹;否則,有且僅有乙個特定的結點被稱為根,當n>1時,其餘結點被分成m(m>0)個互不相交的子集t1,t2,…,tm,每個子集又是一棵樹。由此可以看出,樹的定義是遞迴的。
樹的應用
1)樹可表示具有分枝結構關係的物件
家族族譜
單位行政機構的組織關係
2)樹是常用的資料組織形式
樹的基本術語
樹的結點:包含乙個資料元素及若干指向子樹的分支;
孩子結點:結點的子樹的根稱為該結點的孩子;
雙親結點:b 結點是a 結點的孩子,則a結點是b 結點的雙親;
兄弟結點:同乙個雙親的孩子結點之間互為兄弟;
堂兄結點:雙親在同一層的結點互為堂兄弟;
祖先結點: 從根到該結點的所經分支上的所有結點;
子孫結點:以某結點為根的子樹中任一結點都稱為該結點的子孫
樹的深度:樹中結點的最大層次
結點的度:結點子樹的個數
樹的度: 樹中最大的結點度。
葉子結點:也叫終端結點,是度為 0 的結點;
分枝結點:度不為0的結點;
二叉樹的概念和性質(重點掌握)
定義:二叉樹是另一種樹形結構。它與樹形結構的區別是:
(1)每個結點最多有兩棵子樹;
(2)子樹有左右之分。
二叉樹的性質
1、 在二叉樹的第i層上最多有2的i-1次冪個結點(i≥1)
2、深度為k的二叉樹最多有2的k次冪-1個結點(k≥1)
3、對於任意一棵二叉樹bt,如果度為0的結點個數為n0,度為2的結點個數為n2,則n0=n2+1。
二叉樹補充概念
4、具有n個結點的完全二叉樹的深度為 log2n+1。其中,log2n 的結果是不大於log2n的最大整數。
5、 對於有n個結點的完全二叉樹中的所有結點按從上到下,從左到右的順序進行編號,則對任意乙個結點i (1≤i≤n),都有:
(1)如果i=1,則結點i是這棵完全二叉樹的根,沒有雙親;否則其雙親結點的編號為 i/2。
(2)如果2i>n,則結點i沒有左孩子;否則其左孩子結點的編號為2i。
(3)如果2i+1>n,則結點i沒有右孩子;否則其右孩子結點的編號為2i+1。
二叉樹的儲存結構
兩種實現方式—順序儲存、鏈式儲存
1、順序儲存結構
其儲存形式為:用一組連續的儲存單元按照完全二叉樹的每個結點編號的順序存放結點內容。
儲存時按照元素之間一對一的關係
2、鏈式儲存結構
對於非完全二叉樹,需要將空缺的位置用特定的符號填補,若空缺結點較多,勢必造成空間利用率的下降。在這種情況下,就應該考慮使用鏈式儲存結構。
typedef struct node
btnode,*btree;
這種儲存結構的特點是尋找孩子結點容易,雙親比較困難。因此,若需要頻繁地尋找雙親,可以給每個結點新增乙個指向雙親結點的指標域,其結點結構如下所示。
三叉鍊錶,即在每個結點中增加了乙個parent指標,指向雙親結點的指標域
資料結構 知識點
定義 度 兒子數 分支節點 除了根和葉子的節點 根的深度為1 資料結構的分類 資料結構分為邏輯結構和物理結構。邏輯結構 表現資料之間的關係的一種資料結構,分為線性結構和非線性結構。物理結構 表現資料如何儲存的一種資料結構,通常分為順序結構 鏈式結構 索引結構和雜湊結構。有序表,也叫有序線性表,資料按...
資料結構知識點
1 線性結構與非線性結構 線性結構 線性表,棧,隊 乙個根節點,最多乙個前節點乙個後節點 首節點無前節點,尾接點無後節點 非線性結構 樹形結構,圖形結構 線性表 由一組資料元素構成,資料元素的位置只取決於自己的序號 陣列 棧 限定只能在表的一端進行插入和刪除,先進後出,只能在棧頂進出 佇列 只能在表...
資料結構,知識點
二叉樹 定義 二叉樹在圖論中是這樣定義的 二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3。有根二叉樹還要滿足根節點的度不大於2。基本概念 二叉樹是遞迴定義的,其結點有左右之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 2 只有乙個根節點的二叉樹 3 只有左子樹 4 只有右子樹 5 完全二叉樹。...