實現乙個二叉查詢樹,並且支援插入、刪除、查詢操作
//實現乙個二叉查詢樹,並且支援插入、刪除、查詢操作
typedef
char datatype
typedef
struct bnode
btnode,
*btptr;
createlbtree
(btptr bt)
//建立以bt為根節點指標的二叉鍊錶結構
i++;//節點序號計數
enqueue
(q, p)
;//新節點位址或虛節點位址(null)進隊
if(i ==
1) bt = p;
//第一輸入節點為根
else
ch =
getchar()
;//輸入下一資料
}return
(bt)
;}
實現查詢二叉查詢樹中某個節點的後繼、前驅節點
//實現查詢二叉查詢樹中某個節點的後繼、前驅節點
//線索二叉樹
typedef
struct bnode
btnode,
*btptr;
btptr pre =
null
;void
inthreadbt
(btptr bt)
//對二叉樹bt的線索華的演算法
if(bt -> rchild ==
null
)//右指標空閒時
bt -> rtag =1;
//記錄下此點有空閒指標
if(pre && pre->rtag ==1)
//上乙個節點有空的後繼指標時,
pre -> rchild = bt;
//該指標指向其後繼(本節點)
pre = bt;
//次節點已訪問,更新為前驅
inthreadbt
(bt -> rchild)
;//線索化右子樹 }}
btptr inpre
(btptr p)
//求中序線索二叉樹中p節點前驅的演算法
btptr insucc
(btptr p)
//求中序線索二叉樹中p節點後繼的演算法
實現二叉樹前、中、後序以及按層遍歷
//實現二叉樹前、中、後序以及按層遍歷
void
preorder
(btptr t)
//對當前根節點指標為t的二叉樹按前序遍歷的演算法
}void
inorder
(btptr t)
//對當前根節點指標為t的二叉樹按中序遍歷的演算法
}void
postorder
(btptr t)
//對當前根節點指標為t的二叉樹按後序遍歷的演算法
}void
layerorder
(btptr t)
//對二叉樹按層次遍歷的演算法
}}
實現乙個小頂堆、大頂堆、優先順序佇列
實現堆排序
void
heapsort
(sqfile f)
//對順檔案f的堆排序演算法
}
利用優先順序佇列合併 k 個有序陣列
求一組動態資料集合的最大 top k
資料結構 五 二叉樹(Binary Tree)
二叉樹 binary tree 是n n 0 個結點的有限集合,該集合或者空集 空二叉樹 或由乙個結點和兩棵互不相交的 分別稱為根結點的左子樹和右子樹的二叉樹組成。圖5.1 1 每個結點最多兩棵樹,所以二叉樹的結點的度最大為2 2 左子樹和右子樹是有序的 3 即使樹中某結點只有一棵樹,也要區分它是左...
大話資料結構 (五)二叉樹的來由
在這次學習之前,在學校課程內也學過資料結構這門課,當時也只是臨時抱佛腳應付考試。提到樹,我的第一映像是,它得先建立乙個結點,結點的內容包括該結點的值和兩個結點指標。現在想起來還真有點此處省略一萬字 下面正式進入主題,既然線性結構裡面分為順序儲存結構和鏈式儲存結構,那麼樹的儲存結構會不會也是類似的呢。...
資料結構學習筆記五 二叉查詢樹
二叉查詢樹 binary search tree 又被稱為二叉搜尋樹。它是特殊的二叉樹 對於二叉樹,假設x為二叉樹中的任意乙個結點,x節點包含關鍵字key,節點x的key值記為key x 如果y是x的左子樹中的乙個結點,則key y key x 如果y是x的右子樹的乙個結點,則key y key x...