在程式的世界裡,任何問題或技術的落腳點都是資料結構,所以在學習或研究這些問題或技術時,要注重理解底層或實現過程中所採用的資料結構。本系列會將常用的資料結構進行總結,首先看下樹。
一、樹常用的樹形資料結構有:搜尋二叉樹、平衡二叉樹、紅黑樹、完全二叉樹;
1.搜尋二叉樹:父子節點滿足大小關係,左子樹都小於根節點,根節點都小於右子樹,根據這一特性能快速進行查詢;典型應用有:全球網域名稱解析伺服器的部署、登錄檔等等;
2.平衡二叉樹:搜尋二叉樹在極端情況下會變成乙個鍊錶,從而導致查詢效能下降,為此引入了平衡二叉樹,以確保左右子樹的高度差;典型應用:很少使用,基本上都用紅黑樹來代替使用。
3.紅黑樹:平衡二叉樹在調整樹的平衡性時,需要全樹調整,導致調整的代價太大,為此引入了紅黑樹,在紅黑樹的節點中加入了乙個表示顏色的變數,能夠在區域性進行調整平衡性而無需整棵樹一起調整;典型應用:epoll內部結構。
4.完全二叉樹:自身有一些特定的函式關係等式,如父子節點滿足根節點為i,則左節點為2*i+1,右節點為2*i+2=左節點+1;最後乙個非葉子節點為n-2/2等等,像堆排序就是利用了這些數學關係等式。典型應用:堆排序。
5.b+樹:有待進一步學習......。
參考:1.資料結構之幾種簡單樹的區別
2.程式設計面試的10大演算法概念彙總
資料結構 佇列及其應用
除了順序容器外,標準庫還定義了三個順序容器介面卡,stack queue和priority queue。本質上乙個介面卡是一種機制,能使某種事物的行為看起來像另外一種事物一樣。乙個容器介面卡接收一種已有的容器型別,使其行為看起來像另外一種不同型別一樣。本文主要介紹佇列及其應用,棧及其應用參考棧及其應...
資料結構 回文判斷及其應用
要求 採用棧和佇列的方法檢測並輸出乙個單詞是否為回文 include include include 佇列 typedef char qelemtype typedef struct sqqueue 棧 define maxsize 200 typedef struct stack 佇列 void ...
js資料結構之棧及其應用
所謂棧是先進後出,下面來看一下 實現 class stack 新增新元素 add ele 移除乙個元素 remove 取棧頂元素 get return null 清空棧 clear 返回棧的長度 getlength 再來看下他的應用,首先是判斷乙個算數表示式的括號是否一一對應,例如 5 3 2 4 ...