1. 程式人生 > >樹論入門

樹論入門

二叉查詢樹
別名:有序二叉樹(ordered binary tree),已排序二叉樹(sorted binary tree)
定義:是指一棵空樹或者具有下列性質的二叉樹:
若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;
若任意節點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;
任意節點的左、右子樹也分別為二叉查詢樹。
沒有鍵值相等的節點(no duplicate nodes)。
性質:因為一棵由n個結點隨機構造的二叉查詢樹的高度為lgn,所以順理成章,二叉查詢樹的一般操作的執行時間為O(lgn)。但二叉查詢樹若退化成了一棵具有n個結點的線性鏈後,則這些操作最壞情況執行時間為O(n)。

平衡二叉樹:空樹或者左右兩子樹高度差絕對值不超過1

紅黑樹
定義:
R-B Tree,它是一種二叉查詢樹,紅黑樹的每個節點上都有儲存位表示節點的顏色,可以是紅(Red)或黑(Black)。通過對任何一條從根到葉子的路徑上各個結點著色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長出倆倍,因而是接近平衡的。主要是用它來儲存有序的資料,它的時間複雜度是O(lgn),效率非常之高。
作用:
Java集合中的TreeSet和TreeMap,C++ STL中的set、map,及Linux虛擬記憶體的管理
性質:
1.每個結點要麼是紅的要麼是黑的。
2.根結點是黑的。
3.每個葉結點(葉結點即指樹尾端NIL指標或NULL結點)都是黑的。
4.如果一個結點是紅的,那麼它的兩個兒子都是黑的。
5.對於任意結點而言,其到葉結點樹尾端NIL指標的每條路徑都包含相同數目的黑結點
調整:
新增或刪除紅黑樹中的節點之後,紅黑樹就發生了變化,可能不滿足紅黑樹的5條性質,也就不再是一顆紅黑樹了,而是一顆普通的樹。而通過旋轉,可以使這顆樹重新成為紅黑樹。簡單點說,旋轉的目的是讓樹保持紅黑樹的特性。旋轉包括兩種:左旋和右旋。