四元樹區塊的點資料分布圖
**四元樹**是一種樹狀資料結構，在每一個節點上會有四個子區塊。四元樹常應用於二維空間資料的分析與分類。 它將資料區分成為四個象限。資料範圍可以是方形或矩形或其他任意形狀。這種資料結構是由 拉斐爾·芬科爾(Raphael Finkel) 與 J. L. Bentley 在1974年發展出來 。 類似的資料分割方法也稱為 *Q-tree*。 所有的四元樹法有共同之特點:

* 可分解成為各自的區塊
* 每个区块都有节点容量。当节点达到最大容量时，节点分裂
* 樹狀資料結構依造四元樹法加以區分

形態
--

四元樹可以用他們資料形態的表示法來作分類，資料形態的項目有：區域、點、直線及曲線。四元樹也可以進行分類，不管樹的形態是否獨立於已處理過的排秩資料。一些四元樹的形態如下所示：

### 四元樹區塊

四元樹區塊表示為空間的分割，即在二維上分割區塊為四組相同的象限、次象限等，且每個葉節點包含有關特殊次區塊的資料。樹里的每個節點不是正好有4個子節點，就是沒有子節點(為一個樹葉節點)。四元樹區塊不是嚴格的一顆'樹' - 且位置的次分割與資料無關。他們是比較精確一些稱為'單詞查找樹'.

在一個深度為n的四元樹區塊中可以用來表示一個影像包含有2n × 2n的畫素，每個畫素的值為0或1。根節點表示全部影像區塊。假如畫素在任何區塊不是全部為0或1，那就可以進行畫分。在這個應用中，每個葉節點代表一個段落的畫素、段落畫素里面包含全部為零或全部為一的組合。

四元樹區塊也可以用為一種資料區塊上不同變化解析的表達法。比如，溫度在一個區塊中可以儲存為一個四元樹，而樹葉節點儲存著平均溫度涵蓋到它所擁有的次區塊。

假如四元樹區塊被用來表達一組點資料(諸如一組城市的經緯度)，區塊就進行次分割直到每個葉節點包含最多一個單點。

### 點四元樹

點四元樹修改自二叉树用來表示二維的點資料。點四元樹與四元樹都有共同的特點，不過於次分割的中心總是在一點時、點四元樹視為一真樹(true tree)。樹的形態根據編過序的資料而定。在比較二維規律資料點上是相當有效率的，經常運作在O(log n)的時間複雜度內。

#### 點四元樹的節點結構

點四元樹的節點類似於二叉樹的節點，它們之間的主要差別在於點四元樹有4個指標(每一個象限一個指標)、而一般二叉樹只有2個指標(左指標及右指標)。點四元樹的鍵值也是經常被分解為兩部分，如在直角坐標上的 x 及 y 值。因此，一個節點包含下列資訊：

* 4個指標(Pointer)：quad[‘NW’](西北)、quad[‘NE’](東北)、quad[‘SW’](西南)、及quad[‘SE’](東南)。
* 點；含有如下項目：
	+ 鍵值；通常以直角座標(x, y)值來表示。
	+ 值；比如是"名字"。

### 邊四元樹

邊四元樹是專門用來儲存直線而不是點。曲線能分割每格到很接近精細的解析度。如此能產生極度的不平衡樹，而此不平衡樹可能推翻索引的使用目的。

一些四元樹的常用法
---------

* 圖像表示法  
Bitmap and its compressed quadtree representation
* 空間索引(Spatial index)。
* 在二維的有效率之碰撞偵測(collision detection)。
* 地形資料的隱藏面決定(Hidden surface determination)。
* 儲存分散資料，諸如試算表(spreadsheet)、或著一些矩陣計算的格式化資訊。
* 多維場的解法。(计算流体力学, 电磁学)
* 生命游戏模擬程式。
* 毒瘤資料結構

四元樹為八叉树的二維類比。

區辨說明
----

假如幾何次分割不能減縮每個四元樹的項目數時，(例如，在資料重疊時)則四元樹的次分割失敗，為了使演算法能夠繼續進行其容量必須突破限制。比如，一個四元樹最大的容量為8，而且有9個點在(0, 0)，次分割將會造成3個空的四元樹，且每個空四元樹會包含最初的9個點，再次分割依此類推。因為樹必須允許在這樣的象限內超過8點，如此四元樹對帶有任意幾何(比如：地圖或圖形)的資料集才能夠達到O(N)的時間複雜度。

註釋
--

1. ↑  Tomas G. Rokicki.. 2006-04-01  [2009-05-20]. （原始内容存档于2012-10-02）.

參考資料
----

1. Raphael Finkel and J.L. Bentley.. Acta Informatica. 1974, **4** (1): 1–9. doi:10.1007/BF00288933.
2. Mark de Berg, Marc van Kreveld, Mark Overmars, and Otfried Schwarzkopf.  2nd revised edition. Springer-Verlag. 2000. ISBN 3-540-65620-0.  引文格式1维护：冗余文本 (link) Chapter 14: Quadtrees: pp.291–306.

參看
--

* 八叉树
* 二叉空間分割(Binary space partitioning)
* k-d树(Kd-tree)
* R樹(R-tree)
* UB樹(UB-tree)
* 空間索引(Spatial index)
* 空間資料庫(Spatial database)

外部連結
----

* A discussion of the Quadtree and an application（页面存档备份，存于） （英文）
* Considerable discussion and demonstrations of Spatial Indexing （英文）

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
计算机科学中的树 |
| --- |
|  |
| 二叉树 | 
* 二元搜尋樹
* 笛卡尔树
* MVP树
* Top tree（英语：）
* T树
* 线索二叉树

 |
|  |
| 自平衡二叉查找树 | 
* AA树
* AVL树
* 左倾红黑树
* 红黑树
* 替罪羊树
* 伸展树
* 树堆
* 加权平衡树

 |
|  |
| B树 | 
* B+树
* B\*树
* Bx树
* UB树
* 2-3树
* 2-3-4树
* (a,b)-树
* 跳舞樹（英语：）
* H树

 |
|  |
| 堆 | 
* 二叉堆
* 二项堆
* 斐波那契堆
* 左偏树
* 配对堆
* 斜堆
* 范恩德蟒蛇樹（英语：）

 |
|  |
| Trie | 
* 后缀树
* 基数树
* 三叉查找树
* X-快速前缀树
* Y-快速前缀树
* AC自动机

 |
|  |
| 二叉空间分割（BSP）树 | 
* 四叉树
* 八叉树
* *k*-d树
* 隐式*k*-d树
* VP树

 |
|  |
| 非二叉树 | 
* 指数树（英语：）
* 融合树（英语：）
* PQ树（英语：）
* SPQR树（英语：）

 |
|  |
| 空间数据分割树 | 
* R树
* R\*树
* R+树
* X树
* M树
* 線段樹 (儲存區間)
* 线段树 (区间查询)
	+ 可持久化线段树
* 希尔伯特R树
* 优先R树

 |
|  |
| 其他树 | 
* 散列日历
* 散列树
* 手指樹（英语：）
* 顺序统计树
* 度量樹（英语：）
* 覆蓋樹（英语：）
* BK树
* 二重連鎖樹（英语：）
* iDistance（英语：）
* Link-cut tree（英语：）
* Log-structured merge-tree（英语：）
* 树状数组
* 哈希树

 |

 |