小编P. *_*nce的帖子

从边列表(节点对)构建二叉树

我想从一个非常不寻常的输入构建一个二叉树。输入包含:

  1. 节点总数。

  2. 根的整数标签。

  3. 所有边(相互连接的顶点/节点)的列表。列表中的边是未排序的,只有一个规则用于确定左/右子元素 - 列表中第一个出现的边中的子元素始终位于左侧。顶点对中子/父的顺序也是随机的。

我提出了一些简单的解决方案,但它们需要对所有边的列表进行多次搜索(我基本上会找到其中有标记根的 2 条边,并对所有子树重复此过程。)

我想这种简单的方法对于具有大量节点的树来说效率非常低,但我想不出其他的办法。

有什么更有效的算法来解决这个问题的想法吗?

这是一个更好的可视化示例

输入:5 个节点,根标记为 2,边列表:[(1,0),(1,2),(2,3),(1,4)]

这棵树看起来像这样:

        2
    1       3
 0     4
Run Code Online (Sandbox Code Playgroud)

algorithm tree performance binary-tree

5
推荐指数
1
解决办法
6220
查看次数

三态元胞自动机规则是如何生成的?

让我们将邻域限制为 n=1(这意味着我们始终需要 3 个单元来评估下一代单元)。

为了

下面是 2 状态规则的示例。请注意,上面一行的规则是按特定顺序生成的,而下面一行是数字 30 的位表示。

我找不到 3 状态 CA 的等效可视化。按照 2 状态 CA 的逻辑,它应该包含 27 种可能的结果,但我不知道它们应该按什么顺序生成。下面一行应该是三进制的 30(前导零总共占据 27 个位置)。

是否有一个通用算法可以按照 CA 的常规顺序生成这些排列(无论状态数量如何)?

提前非常感谢您,如果问题很愚蠢,我们深表歉意。:(

c algorithm cellular-automata

1
推荐指数
1
解决办法
1425
查看次数