二叉树的子节点数是2或0,而四叉树就是子节点是4或0的树。
空间划分问题
四叉树通常用于二维空间的递归分割和索引。其核心思想是,通过将区域分为四象限,各个区域继续向下划分,直到满足某个条件(例如区域内数据足够稀疏或达到最大深度等)
在空间划分问题中,四叉树节点分为两类。四叉树根节点和内部节点表示区域,而叶子节点存储实际数据。
根据划分方法也可以分为几类不同的四叉树。例如基于边界划分出的区域四叉树。基于数据点位置划分的点四叉树。基于数据密度决定是否划分的自适应四叉树。
四叉树划分空间的主要应用在优化空间索引和查询。例如:
- 物理引擎碰撞检测
- 图像处理、边缘检测
- 地形渲染
- 稀疏数据存储
优缺点
优点:
- 降低空间查询复杂度(理想情况下从O(n) 降为 O(log n))。
- 实现简单,对正方形网格数据天然友好。
- 支持动态增删数据点(如移动物体的管理)。
缺点:
- 数据分布不均时可能树深度过大,退化为链表。
- 对于非正方形区域或非均匀数据,空间浪费较多。
- 高维度扩展性差(三维对应八叉树,维度再高则需KD树等)。
其他
类似的,还有划分三维空间用的八叉树。