二叉樹(binary tree)t是有限個元素的集合(可以為空)。當二叉樹非空時,其中有乙個稱為根的元素,餘下的元素(如果有的話)被組成2個二叉樹,分別稱為t的左子樹和右子樹。
二叉樹和樹的區別:
在二叉樹中某個元素的子樹都是有序的,也就是說,可以用左,右子樹來區別。而樹的子樹間是無序的。
滿二叉樹:最後一層都是葉子結點,其他各層都是左右子樹的二叉樹。
完全二叉樹:如果一棵二叉樹最多只有最後兩層有度且小於2的結點,最下層的結點都集中在該層的若干位置上。 顯然,滿二叉樹也是完全二叉樹。
二叉樹的儲存結構:
1.順序儲存結構(把二叉樹的所有結點,按照一定的次序順序,儲存到連續的儲存單元中)
對完全二叉樹而言,順序儲存結構既方便訪問又節省儲存空間。所以這種順序儲存結構僅適用於完全二叉樹)
2.鏈式儲存結構:
用順序儲存方式儲存二叉樹會造成儲存空間的浪費,並且,若需要在樹中經常插入和刪除結點時,由於大量移動結點,順序儲存方式更是不可取的。
儲存樹的最自然的方式是鏈式方式。 表示二叉樹的鍊錶中結點至少包括3個域:資料域和左右指標域。有時為了便於找到結點的雙親,還可在結點結構中增加乙個指向其雙親結點的指標域。(二叉鍊錶或三叉鍊錶)
定義二叉鍊錶:
typedef struct btreenode
二叉樹的層次遍歷
void leveloder(btree p)
}哈夫曼樹及其應用
帶權路徑長度最短的一類樹,又稱最優二叉樹。
帶權路徑長度:所有葉子結點的帶權路徑長度之和。
在資料通訊中經常需要將轉送的文字轉化為二進位制的0,1組成的字串來傳送。可以利用哈夫曼樹構造是電文的編碼總長度最短的編碼方案,即以n中字元出現的次數或頻率作為權,來設計哈夫曼樹,得到的二進位制字首編碼稱為哈夫曼編碼。
資料結構演算法 二叉樹
二叉樹資料結構 bintree.h include templateclass bintree template class treenode type data treenode lchild 左,右子樹 treenode rchild template class bintree void cr...
資料結構 二叉樹例項分析
include include include include include 自己來看看乙個完整性的二叉樹的例子,加深理解 define max 100 typedef struct bnode 二叉樹的節點結構 bnode int e,z,i,j,k 這是一些常用的變數。bnode t,q,p ...
資料結構 二叉樹 反轉二叉樹
include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...