Arrays 在数组中实现四叉树
我们如何将四叉树存储到数组中,而不是使用二叉树。在二叉树中,我们通过从1-n对节点进行编号将其存储到数组中,但是如何将四叉树(每个节点最多有四个子节点)存储到数组中?对于二叉树,算法归结为O(n-1/2)。对于有4个子树的“四叉树”,请尝试O(n-1/4)。可以使用的系统与二叉树基本相同。假设一个节点的子节点有一个特定的位置,就像二叉树中的子节点是“左”或“右”。对于四叉树,可以是“远左”、“中左”、“中右”、“远右”。名称其实并不重要,只是存在一个顺序,例如,一个节点只能有“midleft”和“farright”子节点 然后从上到下迭代树的各个层次,用“空白”占位符填充空白 下面是一个示例树: 微小的边缘表示哪些孩子“失踪” 此树具有以下级别(缺少子级的连字符)Arrays 在数组中实现四叉树,arrays,algorithm,quadtree,Arrays,Algorithm,Quadtree,我们如何将四叉树存储到数组中,而不是使用二叉树。在二叉树中,我们通过从1-n对节点进行编号将其存储到数组中,但是如何将四叉树(每个节点最多有四个子节点)存储到数组中?对于二叉树,算法归结为O(n-1/2)。对于有4个子树的“四叉树”,请尝试O(n-1/4)。可以使用的系统与二叉树基本相同。假设一个节点的子节点有一个特定的位置,就像二叉树中的子节点是“左”或“右”。对于四叉树,可以是“远左”、“中左”、“中右”、“远右”。名称其实并不重要,只是存在一个顺序,例如,一个节点只能有“midleft”和
- 一级:
d
- 第二级:
kzne
- 三级:
r-s-----qt------
- 第四级:
-ai--u--f------
dkzner-s-----qt-------ai--u--f
可以将其编码为数组。例如,在JSON表示法中:
["d", "k", "z", "n", "e", "r", null, "s", null, null, null, null, null,
"q", "t", null, null, null, null, null, null, null, "a", "i", null, null,
"u", null, null, "f"]
关于如何将其转换回同一棵树,没有任何含糊不清的地方。它本质上与在数组中编码二叉树的系统相同