JAVA資料結構 二叉查詢樹

2021-09-08 08:30:54 字數 3094 閱讀 2247

二叉查詢樹(英語:binary search tree),也稱二叉搜尋樹、有序二叉樹(英語:ordered binary tree),排序二叉樹(英語:sorted binary tree),是指一棵空樹或者具有下列性質的二叉樹:

若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值;

若任意節點的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值;

任意節點的左、右子樹也分別為二叉查詢樹;

沒有鍵值相等的節點。

二叉查詢樹相比於其他資料結構的優勢在於查詢、插入的時間複雜度較低。為o(log n)。

二叉查詢樹的操作主要是運用的遞迴的思想,可操作的object類必須繼承了comparable介面,個人實現查詢樹主要是參考了《資料結構與演算法分析》這本書。因為遍歷涉及到三種遍歷方式,所以屆時單獨開一篇。

1

private

static

class binarynode

5 binarynode(t theelement,binarynodelt,binarynodert)

10 t element;//

根節點11 binarynodeleft;//

左子樹12 binarynoderight;//

右子樹13 }

1

private

boolean contains(t x,binarynodet)

10else

13 }

contains方法主要是查詢當前二叉樹是否還有某個節點,利用了comparato方法遞迴呼叫。

1

private binarynodefindmin(binarynodet)

13return findmin(t.left);

*/14 }

findmin與findmax方法類似,這裡只列出一種即可。然後仍有兩種方法解決此問題,一種為遞迴,一種非遞迴。

非遞迴方法就是採用了while循壞思想,直到找出最左的節點即可。

1

private binarynodeinsert(t x,binarynodet)

11else

14return

t;15

}16 }

1

private binarynoderemove(t x,binarynodet)

8else

if(compareresult>0)

11else

if (t.left!=null&&t.right!=null)

15else

18return

t;19 }

刪除節點時需要考慮兩種情況,一種為兩個孩子的情況,一種為單個孩子的情況。

根節點14 binarynodeleft;//

左子樹15 binarynoderight;//

右子樹16}17

private binarynoderoot;//

定義根節點

18public

binarysearchtree()

21public

void

makeempty()

24public

boolean

isempty()

27public

boolean

contains(t x)

30public t findmin() throws

exception

35public t findmax() throws

exception

40public

void

insert(t x)

43public

void

remove(t x)

46private

boolean contains(t x,binarynodet)

55else58}

59private binarynodefindmin(binarynodet)

71return findmin(t.left);

*/72}73

private binarynodefindmax(binarynodet)

79private binarynodeinsert(t x,binarynodet)

89else

92return

t;93}94

}95private binarynoderemove(t x,binarynodet)

102else

if(compareresult>0)

105else

if (t.left!=null&&t.right!=null)

109else

112return

t;113

}114

115 }

view code

也可訪問我的gihub資料結構的部分,暫時內容較少。

posted @

2017-11-26 22:56

朝陽的自留地 閱讀(

...)

編輯收藏

(資料結構)二叉查詢樹

樹,是一種資料結構。它是由n個有限節點組成乙個具有層次關係的集合。特點 樹的基本術語 節點的度 節點擁有的子樹的數目。葉子 度為零的節點。分支節點 度不為零的節點。樹的度 樹中節點的最大的度。層次 根節點的層次為1,其餘節點的層次等於該節點的雙親的層次加1。樹的高度 樹中節點的最大層次。無序樹 如果...

資料結構 二叉查詢樹

使二叉樹成為二叉查詢樹的性質是,對於樹中的每個節點x,它的左子樹中所有關鍵字值小於x的關鍵字值,而它的右子樹中所有關鍵字值大於x的關鍵字值。這意味著,該樹所有的元素以某種統一的方式排序。二叉查詢樹是一棵特殊的二叉樹,二叉查詢樹中節點的結構與二叉樹種節點的結構相同,關鍵在於可以在二叉查詢樹上可以執行的...

資料結構 樹 二叉查詢樹

wiki 首先是名稱 二叉查詢樹英文叫binary search tree,這個在很多演算法題目中很常見所以要記住,特別是英文題目中。也叫做二叉排序樹,二叉搜尋樹等等。具體的定義比較官方,用自己的話說,首先它肯定是二叉樹,其次,當前節點的左子葉元素值比當前節點小,右子葉元素值比當前節點大,所以節點均...