二叉搜索樹、平衡二叉樹、B樹、B+樹、B*樹

二叉查找樹


二叉查找樹,由於不平衡,如果連續插入的數據是有順序的、會導致如下圖B的所示,此時搜索會退化到O(N)  

二叉查找樹,也稱二叉搜索樹,或二叉排序樹。其定義也比較簡單,要麼是一顆空樹,要麼就是具有如下性質的二叉樹:

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

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

(3) 任意節點的左、右子樹也分別爲二叉查找樹;

(4) 沒有鍵值相等的節點。

ä¸åå½¢æçäºåæ¥æ¾æ 

  如上圖所示,是不同形態的二叉查找樹。二叉查找樹是對要查找的數據進行生成樹,左支的值小於右支的值。在查找的時候也是一樣的思路,從根節點開始,比節點大進入右支,比節點小進入左支,直到查找到目標值。

  二叉查找樹的插入算法比較簡單:空樹,就首先生成根節點;不是空樹就按照查找的算法,找到父節點,然後作爲葉子節點插入,如果值已經存在就插入失敗。

  刪除操作稍微複雜一點,有如下幾種情況:

​ (1)如果刪除的是葉節點,可以直接刪除;

​ (2)如果被刪除的元素有一個子節點,可以將子節點直接移到被刪除元素的位置;

​ (3)如果有兩個子節點,這時候就採用中序遍歷,找到待刪除的節點的後繼節點,將其與待刪除的節點互換,此時待刪除節點的位置已經是葉子節點,可以直接刪除。如下圖:

äºåæ¥æ¾æ å é¤åæ¯èç¹ä¾å¾å

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章