OpenDSA 全教程

Chapter 27 Miscellaneous

| 关于   «  9. 一般树的实现   ::   目录   ::   1. 计算极限  »

10. K 叉树实现

10.1. K 叉树实现

\(K\) 叉树是内部结点恰好都有 \(K\) 个孩子的树。 因此,满二叉树就是 2 叉树。 在模块 <Spatial> 中讨论的 PR 四叉树就是一个 4 叉树的例子。 由于 \(K\) 叉树的结点有固定数量的孩子,与一般树不同, 它们相对容易实现。 一般来说,\(K\) 叉树与二叉树有许多相似之处, 可以为 \(K\) 叉树的结点采用类似的实现。 注意,随着 \(K\) 变大,可能出现的 null 指针数量会增多, 内部结点与叶结点所需大小的差异也会增大。 因此,随着 \(K\) 变大, 为内部结点和叶结点选择不同实现的需求也变得更为迫切。

满 K 叉树和完全 K 叉树分别与满二叉树和完全二叉树类似。

待处理

type: Slideshow

图书图表 6.16 的幻灯片:展示 K=3 时的满 Kary树和完全 Kary树。 在实践中,Kary树的大多数应用都把它们限制为满树或完全树。

满 3 叉树和完全 3 叉树。 (a)~这棵树是满树(但不是完全树)。 (b)~这棵树是完全树(但不是满树)。}{ThreeTree}

二叉树的许多性质可以推广到 \(K\) 叉树。 可以推导出与模块 numref`<BinSpace>` 中关于 \(K\) 叉树中 null 指针数量、以及 \(K\) 叉树叶结点与内部结点数量关系的 定理等价的结果。 我们还可以把一棵完全 \(K\) 叉树存储在数组中, 使用简单的公式来计算结点的各种关系, 方式与 <CompleteTree> 节中所用方法类似。

   «  9. 一般树的实现   ::   目录   ::   1. 计算极限  »

关闭窗口