什麼是二叉查詢樹,有什麼優勢?

2021-10-16 02:57:52 字數 1305 閱讀 3755

對於順序儲存,不需要維護有序性,但查詢效率低;

而有序儲存,查詢效率高,但由於插入刪除需要維護有序性,因此效率低。

本文要介紹的二叉查詢樹(也叫二叉搜尋樹、二叉排序樹、adt樹)結合了二者的優勢,不僅查詢效率高,插入和刪除效率也高。

二叉查詢樹(空樹也是二叉查詢樹)的定義:

構建一顆二叉查詢樹的目的,不是為了排序,而是為了提高查詢、插入、刪除關鍵字的速度。不管怎麼說,有序資料結構的查詢速度總是要大於無序資料結構的。

二叉查詢樹有三個操作:

本文主要實現二叉查詢樹的查詢操作。

首先,我的**有6個類,如下圖所示。

假設所有結點中沒有相同的兩個值,因為二叉查詢樹是對關鍵字的排序,而關鍵字可以理解為唯一。退一萬步來講,就算有兩條資料關鍵字相同,也可以將它們儲存於乙個結點中,即結點可以設定四個字段:

回歸主題,首先什麼是二叉排序樹的查詢呢?

查詢的思路是什麼呢?如何利用二叉查詢樹的特性進行查詢?

假設要查詢的二叉排序樹如下圖所示。

下面重點介紹一下adtsearch類。

/**

* 二叉查詢樹結點搜尋操作類

*/public class adtsearch 

//證明找到了,返回這個結點

if(adtnode.getval() == key)

//比較一下,如果小於,則遞迴往左邊搜尋

if(key < adtnode.getval())

//比較一下,如果大於,則遞迴往右邊搜尋

if(key > adtnode.getval())

return null;

}/**

* 搜尋操作入口

* @param root 從該結點開始搜素

* @param key 要搜尋的值

* @return 搜尋到的結點

*/public adtnode searchentrance(adtnode root,int key)

}

示例程式

/**

* 二叉查詢樹main方法

什麼是二叉樹

什麼是二叉樹 包含滿二叉樹和完全二叉樹 通過 樹的儲存結構 一節的學習,我們了解了一些樹儲存結構的基本知識。本節將給大家介紹一類具體的樹結構 二叉樹。簡單地理解,滿足以下兩個條件的樹就是二叉樹 本身是有序樹 樹中包含的各個節點的度不能超過 2,即只能是 0 1 或者 2 例如,圖 1a 就是一棵二叉...

jsoup查詢父元素 什麼是二叉查詢樹?

對於樹的基本認識,我們很容易通過我們平常所見到的樹來理解 一棵樹,有乙個根,根往上又會分叉出大樹枝,大樹枝又會分叉出小樹枝,以此往復,直到最後是葉子。而作為資料結構的樹也是類似的,只不過我們通常將它倒著畫。樹的應用也相當廣泛,例如在檔案系統,資料庫索引中的應用等。本文會對樹的基本概念做介紹,但重點介...

二叉搜尋樹有什麼特點

二叉搜尋樹的特點是對於樹中的每個節點x,它的左子樹中所有關鍵字值小於x的關鍵字值,而它的右子樹中所有關鍵字值大於x的關鍵字值 根據這個性質,對乙個二叉樹進行中序遍歷,如果是單調遞增的,則可以說明這個樹是二叉搜尋樹。二叉搜尋樹的特點 二叉搜尋樹的特點 對於樹中的每個節點x,它的左子樹中所有關鍵字值小於...