根据the Homespring proposed language standard,上游的鲑鱼需要进行“对河流系统的有序搜索......在鱼蜱上找到与鲑鱼同名的河流节点”(第6.4节)。 2)。问题是河流节点存储在一个n-ary树中,所以我不确定如何对这棵树进行有序搜索。谷歌搜索没有任何相关性,维基百科页面甚至没有提到任何类型的遍历。是否可以按顺序遍历k-ary树?
答案 0 :(得分:3)
是的,确实可以这样做!让我们通过比喻来推理。在二叉树中,节点如下所示:
+---+
| v |
+---+
/ \
T0 T1
然后按如下方式进行inorder遍历:
换句话说,您可以想象在找到它们时从左到右扫描访问值。扫描首先击中T0,然后击中v,然后击中T1。
多路树中的节点如下所示:
+----+----+----+ ... +----+
| v0 | v1 | v2 | ... | vn |
+----+----+----+ ... +----+
/ | | | | \
T0 T1 T2 T3 Tn Tn+1
如果我们在这里使用“从左到右扫描”的想法,我们会这样做:
这是一些伪代码:
void inorderWalk(Node* v) {
if (v == null) return;
for (int i = 0; i < v.numChildren; i++) {
inorderWalk(v.child[i]);
visit(v.value[i]);
}
inorderWalk(v.child[v.numChildren]);
}