一、什么是二叉樹

 

1. 什么是樹。

計(jì)算機(jī)科學(xué)里面的樹本質(zhì)是一個(gè)樹狀圖。樹首先是一個(gè)有向無(wú)環(huán)圖,由根節(jié)點(diǎn)指向子結(jié)點(diǎn)。但是不嚴(yán)格的說(shuō),我們也研究無(wú)向樹。所謂無(wú)向樹就是將有向樹的所有邊看成無(wú)向邊形成的樹狀圖。樹是一種遞歸的數(shù)據(jù)結(jié)構(gòu),所以我們研究樹也是按照遞歸的方式去研究的。

 

2.什么是二叉樹。

我們給出二叉樹的遞歸定義如下:

(1)空樹是一個(gè)二叉樹。

(2)單個(gè)節(jié)點(diǎn)是一個(gè)二叉樹。

(3)如果一棵樹中,以它的左右子節(jié)點(diǎn)為根形成的子樹都是二叉樹,那么這棵樹本身也是二叉樹。

 

二、BST

1.什么是二叉排序樹。

二叉排序樹是一種二叉樹,它滿足樹的中序遍歷是有序的。

 

2.BSTBinary Search Tree)。

二叉查找樹是一種最普通的二叉排序樹,一般稱作BST,也稱為B-樹。在這棵樹中,滿足在任意一個(gè)子樹中,都滿足左子樹 < 根節(jié)點(diǎn) < 右子樹,即該樹的中序遍歷滿足從小到大排序的結(jié)果。

 

3.如何構(gòu)造一個(gè)二叉排序樹?

很顯然,要想構(gòu)造一個(gè)BST,就必須在插入節(jié)點(diǎn)時(shí),滿足下面的原則:

(1)如果節(jié)點(diǎn)為空,則直接插入到該節(jié)點(diǎn)。

(2)如果節(jié)點(diǎn)不為空,且要插入的值小于等于當(dāng)前節(jié)點(diǎn)的值,那么則將該節(jié)點(diǎn)插入到左子樹當(dāng)中。

(3)如果節(jié)點(diǎn)不為空,且要插入的值大于當(dāng)前節(jié)點(diǎn)的值,那么則將該節(jié)點(diǎn)插入到右子樹當(dāng)中。

 

4.利用BST的性質(zhì)對(duì)一個(gè)數(shù)組進(jìn)行剃重。

由于BST有二叉排序樹的性質(zhì),我們可以利用這樣的性質(zhì)對(duì)一個(gè)待定數(shù)組進(jìn)行剃重。原理很簡(jiǎn)單,只需要在插入的時(shí)候如果已經(jīng)發(fā)現(xiàn)了相等的節(jié)點(diǎn)的話,那么則不進(jìn)行插入即可。也就是說(shuō),只有該樹沒有的節(jié)點(diǎn),我們才進(jìn)行相應(yīng)的插入操作。

 

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式