演算法基礎6:二叉樹查詢
阿新 • • 發佈:2022-05-03
演算法是基礎,小藍同學準備些總結一系列演算法分享給大家,這是第6篇《二叉樹查詢》,非常贊!希望對大家有幫助,大家會喜歡!
前面系列文章:
1、二叉樹
在連結二叉樹查詢之前我們要了解一下二叉樹是個什麼玩意。
二叉樹指的數一顆最多隻有兩個兩個子樹的資料樹型資料結構。其兩個子樹分別稱為左子樹和右子樹,一個在根節點的左邊,一個在根節點的右邊 這就是一顆二叉樹。下面這些都是二叉樹。
2、二叉查詢樹
在瞭解了二叉樹的前提下,我們可以聊聊二叉查詢樹。二叉查詢樹是一個特殊的二叉樹。他同樣具有最多隻有兩個子樹的特性。但是他的特別點在於其左子樹大於根節點。其右子樹小於根節點。
3、二叉查詢樹實現查詢
因為二叉查詢樹的特殊特性使用它可以很方便的對佇列的的資料進行查詢和插入和刪除。
器查詢實現原理如下:他先找到根節點和根節點對比大小之後,如果大於根節點則去左節點去查詢,如果還是大於左節點的話,則繼續找左節點的左節點。如果小於左節點的話,則找做節點的右節點,若是查詢的節點為空了。則表示不存在這個值。 若是等於了,就表示找到對應的值。同理如果小於根節點則去右節點查詢和左節點一樣。
具體程式碼如下:
public Value get(Key key){ return get(root, key); } private Value get(Node x,Key key){ if(x==null) returnnull; intcmp=key.compareTo(x.key); if(cmp<0) return get(x.left,key); elseif(cmp>0) return get(x.right,key); elsereturnx.value; }
特性:查詢速度 1.39lgN 插入速度 1.39lgN
優缺點:
優點:和二分查詢對比起來,插入速度更快二分查詢插入的速度是N/2 插入速度是1.39lgN
缺點:查詢慢和二分查詢對比起來二分查詢的查詢速度為lgN 所以比二分查詢慢39%
應用:
我們之後會說的二三樹,紅黑樹,B-樹都是基於二叉查詢樹擴充套件實現的,理解了二叉樹,理解剩下的這些相對容易些。