數(shù)據(jù)結(jié)構(gòu)-幾個(gè)圖帶你理解二叉查找樹

二叉查找樹(Binary Search Tree),也稱二叉搜索樹,是指一棵空樹或者具有下列性質(zhì)的二叉樹:

任意節(jié)點(diǎn)的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;
任意節(jié)點(diǎn)的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;
任意節(jié)點(diǎn)的左、右子樹也分別為二叉查找樹;
沒有鍵值相等的節(jié)點(diǎn)。

二叉查找樹相比于其他數(shù)據(jù)結(jié)構(gòu)的優(yōu)勢在于查找、插入的時(shí)間復(fù)雜度較低。為O(log n)。二叉查找樹是基礎(chǔ)性數(shù)據(jù)結(jié)構(gòu),用于構(gòu)建更為抽象的數(shù)據(jù)結(jié)構(gòu),如集合、multiset、關(guān)聯(lián)數(shù)組等。(摘自維基百科

圖1↓ :查找 BST 中的某個(gè)元素

在二叉搜索樹b中查找x的過程為:

若b是空樹,則搜索失敗,否則:
若x等于b的根節(jié)點(diǎn)的數(shù)據(jù)域之值,則查找成功;否則:
若x小于b的根節(jié)點(diǎn)的數(shù)據(jù)域之值,則搜索左子樹;否則:
查找右子樹。


類似于二分查找法。

圖2 ↓ :從有序數(shù)組構(gòu)造一個(gè)二叉查找樹

圖3 ↓:往 BST 中插入元素

向一個(gè)二叉搜索樹b中插入一個(gè)節(jié)點(diǎn)s的算法,過程為:

若b是空樹,則將s所指結(jié)點(diǎn)作為根節(jié)點(diǎn)插入,否則:
若s->data等于b的根節(jié)點(diǎn)的數(shù)據(jù)域之值,則返回,否則:
若s->data小于b的根節(jié)點(diǎn)的數(shù)據(jù)域之值,則把s所指節(jié)點(diǎn)插入到左子樹中,否則:
把s所指節(jié)點(diǎn)插入到右子樹中。(新插入節(jié)點(diǎn)總是葉子節(jié)點(diǎn))

圖4 ↓:BST 轉(zhuǎn)成有序數(shù)組

參考:http://www.lxweimin.com/p/8f8876c9459d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容