数据结构中的树与二分图
在数据结构和算法领域,树和二分图是非常重要的概念,它们在许多实际应用中都发挥着关键作用。下面将详细介绍kd - 树和二分图的相关知识。
1. kd - 树
kd - 树(k - dimensional tree)是一种用于组织k维空间$R^k$中数据点的数据结构。
1.1 中位数的定义
对于长度为n的数字序列s,其中位数是第$\lfloor\frac{n}{2}\rfloor$小的数。例如,对于序列s = (1, 4, 7, 8, 9),由于长度n = 5,中位数是第$\lfloor\frac{5}{2}\rfloor$ = 3小的数,即7;对于序列t = (1, 5, 8, 10),中位数是第2个元素,即5。如果序列是有序的,那么可以在常数时间内找到中位数。
1.2 kd - 树的构建
kd - 树的叶子节点表示$R^k$中的点,每个非叶子节点表示一个超平面,该超平面将$R^k$划分为两个半空间。划分超平面是循环选择的,沿着树向下移动时,会循环使用定义划分平面的轴。
例如,在二维平面中,根节点的划分是x轴对齐的:
$R_x^a = {(x, y) \in R^2 | x \leq a}$
根节点子节点的划分是y轴对齐的:
$R_y^b = {(x, y) \in R^2 | y \leq b}$
子节点的子节点又会是x轴对齐的,依此类推。
以下是一个二维平面上构建kd - 树的示例:
设P是二维平面$R^2$上的一组点:
$P = {(8, 5), (7, 2), (9, 11), (4,
超级会员免费看
订阅专栏 解锁全文
19

被折叠的 条评论
为什么被折叠?



