二叉搜尋樹的介紹與實現

2021-10-25 04:44:08 字數 1280 閱讀 2748

我們在進行搜尋時,最簡單的無疑是for迴圈,可它的效率太低了,今天我們來了解一下方便快捷的二叉搜尋樹。

什麼是二叉搜尋樹

二叉搜尋樹的插入演算法

二叉搜尋樹的建立

二叉搜尋樹的搜尋

叫二叉搜尋樹,那麼它一定要是一顆二叉樹了,它滿足以下特點:

1,每個節點都有乙個作為搜尋依據的關鍵碼,節點的關鍵碼不同,且為搜尋資料。

2,左子樹上所有節點的關鍵碼都小於根節點的關鍵碼。

3,右子樹所有節點的關鍵碼都大於根節點的關鍵碼。

4,左右子樹也都是二叉搜尋樹。

因為二叉樹搜尋樹的特性,所以當我們用中序遍歷二叉搜尋樹時,就會的到乙個從小到大排列的序列,可以用它來檢測二叉搜尋樹的建立是否正確。

在考慮建乙個二叉搜尋樹之前,我們先來考慮一下它的插入演算法。

node* bst::

insert

(int a,node*

&roottemp)

else

if(a < roottemp-

>data)

insert

(a, roottemp-

>lchild)

;else

if(a > roottemp-

>data)

insert

(a, roottemp-

>rchild)

;return roottemp;

}

在這裡我們學乙個非常奇妙的指標引用,單用指標的話,指標每一次都會更新,因為他僅僅是乙個形參,沒有對本身就行改變,就導致我們無法建立節點之間的乙個聯絡。在運用指標引用後,他作為乙個實參,每乙個為空的節點,在我們建立乙個節點時,它都是上乙個不為空的節點的左右子女,很自然的我們就把乙個搜尋二叉搜的聯絡建立了起來。

有了插入演算法,建立二叉樹就非常的簡單了,我們只需對於每乙個值,呼叫插入演算法,就很自然的建立出了乙個搜尋二叉樹。

void bst::

setbst

(int

* arr, node* p)

}

二叉搜尋樹的搜尋就更沒有問題了,**很簡單,一看就會(上手也不會廢)。

int bst::

search

(int a, node*

& roottemp)

}

結合我的節點定義

int arr[9]

=;struct node;}

;

謝謝大噶夥!

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹簡單介紹

2.最大關鍵字元素和最小關鍵字元素 2.插入和刪除 2.刪除 1.概述 一棵二叉搜尋樹是以一棵二叉樹組織的,其中每個結點就是乙個物件,每個節點包含屬性left right p,它們分別指向結點的左孩子,右孩子和雙親,如果某個結點的孩子的屬性值不在,則為nil。對任何結點x,x左子樹中的關鍵字最大不超...

二叉搜尋樹的實現

binarysearchtree.h inte ce for the binarysearchtree class.include binarytreenode.h include binarytree1.h if defined afx binarysearchtree h 1cd2ff9d 73...