二叉查詢樹(bst,binary search tree),也稱為二叉排序樹或者二叉搜尋樹,是二叉樹的一種。二叉查詢樹與二叉樹一樣,可以為空;另外,如果不為空,作為二叉查詢樹需滿足以下性質:
1. 非空左子樹的所有鍵值小於其根節點的鍵值;
2. 非空右子樹的所有鍵值大於其根節點的鍵值;
3. 左、右子樹都是二叉查詢樹。
為什麼二叉查詢樹會具有這樣的性質,因為二叉查詢樹的構造就是將值小的元素放到了左子樹節點,值大的元素放到了右子樹節點,這樣可以增加查詢的效率,其思想與二分查詢法是一樣的。
如下圖所示,就是一棵二叉查詢樹。
二叉查詢樹的最大元素一定是在樹的最右端節點上,最小元素一定是在樹的最左端節點上。當然,最大元素與最小元素也不一定是在葉子節點上,因為最左端的最小元素可能還有右子樹,而最右端的最大元素也可能有左子樹,如下圖所示。
13是最小的元素,它在最左端節點上,但是它不是葉子節點,它還有右子樹,其元素為14;而30是最大的元素,它是最右端的節點,但是它不是葉子節點,它還有左子樹,其元素為27。
(一)二叉查詢樹的API實現
最近在看資料結構,看到二叉查詢樹,為了加深自己對二叉查詢樹知識的印象,所以自己實現了一些於樹相關的api。二叉查詢樹的定義 ps 其實就在二叉樹上面加多了一些限制條件 樹節點的結構 節點類api設計 類名 node 構造方法 node key key,value value,node left,no...
二叉樹學習(一)二叉樹基礎
最近準備學習一下資料結構,二叉樹當然是必須要了解的了。網上看了一些貼子,順便把重要的內容就記下來了,有需要的同學可以看看,入門看很有幫助。1.1 定義 1.2 結點的度 1.3 結點關係 1.4 結點層次 2.1 定義 2.2 二叉樹特點 每個結點最多有兩顆子樹,所以二叉樹中不存在度大於2的結點。左...
資料結構(一) 二叉樹
二叉樹是由n n 0 個結點組成的有序集合,集合或者為空,或者是由乙個根節點加上兩棵分別稱為左子樹和右子樹的 互不相交的二叉樹組成。假設二叉樹節點總數為n,度數為1的節點個數為n1,則n n0 n1 n2成立,除根節點外,其它節點通過一條樹枝且僅通過一條樹枝與其父節點相連,而二叉樹中樹枝總數為n1 ...