爲何要使用樹以及使用什麼樹

 
(1)爲何要使用樹:
   由於若是使用線性表進行操做,那麼搜索的時間複雜度是O(n)規模的。而若是使用樹這個數據集的話,可以把時間複雜度的規模下降到O(logn)規模。
 
(2)爲何使用二叉查找樹:
  構建二叉查找樹,可以限制節點的左子樹中的值都比當前節點的小,右子樹的都比當前節點的大。這樣子更有利於進行搜索,有利於進行二分查找。
 
(3)爲何使用平衡二叉樹:
  若是是非平衡二叉樹,那麼在構建樹的過程當中可能會出現一種狀況,那就是樹變成單支二叉樹,也就是變成了鏈表的結構,此時搜索的時間複雜度又會變成O(n)規模。所以提出了使用平衡二叉樹。控制左右子樹的高度差不能超過1.此時就可以保證不會出現單支二叉樹的狀況。通常是構建AVL樹。並且AVL樹具備自平衡特性,所以保證其在失去平衡以後,能夠自動調整回來,可以嚴格保證是一棵平衡二叉樹。
 
(4)爲何使用紅黑樹:
  AVL樹確實挺好的。可是AVL樹追求嚴格的平衡,所以在添加或者刪除節點時,必定程度上會增長操做次數。而在紅黑樹中,只是追求相對平衡,所以在必定程序上可以提升效率。這就紅黑樹比較好的一點。適用於內存中。
 
(5)爲何使用B樹:
  B樹的一個特色就是它是一種多分支樹。這種樹的中的每一個節點能夠存儲多個內節點,經過這樣子,能夠大大下降樹的高度。所以也能夠大大提升樹的搜索速度。由於對於樹來講,其時間複雜度是與樹的高度有關的。並且是成正比。正是由於它的這種特性,因此它的搜索效率挺高的。可是通常應用於外存中,好像是由於它的空間複雜度比較大,須要用到比較多的存儲空間,因此比較適用於外存。
相關文章
相關標籤/搜索