二叉树的子节点数是2或0,而四叉树就是子节点是4或0的树。

空间划分问题

四叉树通常用于二维空间的递归分割和索引。其核心思想是,通过将区域分为四象限,各个区域继续向下划分,直到满足某个条件(例如区域内数据足够稀疏或达到最大深度等)

在空间划分问题中,四叉树节点分为两类。四叉树根节点和内部节点表示区域,而叶子节点存储实际数据。

根据划分方法也可以分为几类不同的四叉树。例如基于边界划分出的区域四叉树。基于数据点位置划分的点四叉树。基于数据密度决定是否划分的自适应四叉树。

四叉树划分空间的主要应用在优化空间索引和查询。例如:

  • 物理引擎碰撞检测
  • 图像处理、边缘检测
  • 地形渲染
  • 稀疏数据存储

优缺点

优点:

  • 降低空间查询复杂度(理想情况下从O(n) 降为 O(log n))。
  • 实现简单,对正方形网格数据天然友好。
  • 支持动态增删数据点(如移动物体的管理)。

缺点:

  • 数据分布不均时可能树深度过大,退化为链表。
  • 对于非正方形区域或非均匀数据,空间浪费较多。
  • 高维度扩展性差(三维对应八叉树,维度再高则需KD树等)。

其他

类似的,还有划分三维空间用的八叉树。