二叉查詢樹

2021-09-30 12:17:01 字數 1483 閱讀 6915

1.

引入以順序表作為儲存結構的查詢演算法中,二分查詢效率最高。但二分查詢要求表按關鍵字有序,且不能用鍊錶作儲存結構,因此,當表的插入或刪除操作頻繁時,為維護表的有序性,勢必要移動表中很多結點。這種由移動結點引起的額外時間開銷,就會抵消二分查詢的優點。也就是說,二分查詢只適用於靜態查詢表。若要進行高效率的查詢與刪除操作,可採用動態查詢表作為儲存結構,如二叉查詢樹(binary search tree)。

2.二叉查詢樹定義

二叉查詢樹又稱二叉排序樹,定義為:二叉查詢樹或者是空樹,或者是滿足如下性質的二叉樹:

①若它的左子樹非空,則左子樹上所有結點的值均小於根結點的值;

②若它的右子樹非空,則右子樹上所有結點的值均大於根結點的值;

③左、右子樹本身又各是一棵二叉查詢樹。

3.特點

1)對二叉查詢樹進行查詢、插入、刪除操作的時間複雜度為o(h),其中h為二叉查詢樹的高度;

2)隨機構造的二叉查詢樹的的期望高度為o(logn)。

3)若建構二叉查詢樹的輸入序列有序,則得到的二叉查詢樹的高度將為o(n),進行基本操作的時間複雜度也為o(n)。

4)中序遍歷二叉查詢樹可得遞增有序序列,時間複雜度為o(n),其中n為二叉查詢樹中結點數。所以,用二叉查詢樹的方法對序列進行排序,平均時間複雜度為o(n*logn),最壞情況為

4.操作

1)結構定義

2)初始化

3)銷毀

4)最小值

5)最大值

6)查詢:分為遞迴和非遞迴版本

7)插入

8)刪除

分3中情況:待刪除結點為葉子結點;待刪除結點有左孩子或又孩子;待刪除結點有兩個孩子。

9)中序遍歷

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...

二叉樹 二叉查詢樹

二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...