Java——二叉樹/平衡二叉樹/紅黑樹/B Trees/B+ Trees


一、樹的定義:

  由節點組成的一個具有層次關系的集合;長的像樹所以叫樹;

  擼樹神器:https://www.cs.usfca.edu/~galles/visualization/

二、二叉樹:

  特性:1)左子樹上所有節點的值均小於它的根節點的值;

    2) 右子樹上所有節點的值均大於它的根節點的值;

  示例:一個不好會形成鏈表結構;

  

三、平衡二叉樹(AVL):

  特性:1)在二叉樹的基礎上,要求兩個子樹的高度差不能超過1;

    1)每次增刪都會通過一次或多次旋轉來平衡二叉樹;

  示例:重新插入123456節點;

  

四、紅黑樹:

  特性:1)節點要么黑要么紅;

    2)根節點一定時黑色;

    3)所有葉節點都為null,且為黑色;

    4)紅色節點的兩個子節點都為黑色,不會有兩個連續的紅;

    5)任意一個路徑上的黑節點數,一定時相等的;

  ps:Java中的terrMap和treeSet是紅黑樹實現;

  

五、B Trees/B+ Trees:

  1)每個節點擁有多個值,2個位二叉,3個為三叉,超過這個值就需要分子節點;

  2)平衡節點讓路徑的深度減小IO讀取次數隨之減少;

  3)平衡節點中的數據是放到內存中判斷的,所以速度快;

  

六、B+ Trees

  mysql的索引就是B+ Trees實現的;

  特點:1)非子葉節點沒有沒有數據,只有索引;

    2)所以不管查那個數據,都要從葉節點獲取,每次查詢的次數都是一樣的;

    3)mysql中的索引讀取值,只需要一次哈希計算,所以速度比B Tree快;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM