algorithm - 以编程方式将节点分配给分层树/网络

标签 algorithm data-structures graph

我有一个看起来像这样的网络/树。

enter image description here

我用二叉树来表示这个模型。然而,手动分配节点的 rightleft 参数对于级别 > 4 变得很麻烦。

有没有一种方法可以让我以编程方式完成上述作业

最佳答案

您可以首先创建一个二维节点数组,其中行 i 对应于您论文中的级别 i,列 j 对应于该级别中的第 j 个节点:

for i = 1 to n:
   for j = 1 to i:
      A[i][j] = new Node()

那么,节点之间的关系是,A[i][j]节点的左 child 是A[i+1][j],右 child 是A[i+1][j] child 是 A[i+1][j+1]

for i = 1 to n-1:
   for j = 1 to i:
      A[i][j].left = A[i+1][j]
      A[i][j].right = A[i+1][j+1]

for j = 1 to n:
   A[n][j].left = null
   A[n][j].right = null

关于algorithm - 以编程方式将节点分配给分层树/网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473745/

相关文章:

recursion - Datomic 的递归数据日志查询真的很慢

algorithm - 挑选五个总和为S的数字

algorithm - 滑动窗口上的最小值

c++ - CPU 缓存感知 C++/C 编程

mysql - MySQL 和 Neo4J 中的 friend 的 friend 的 friend 的 friend 的...关系的比较

algorithm - 解决问题_使用最大流

algorithm - 给定一组区间,找到最少需要放置的点数,使得每个区间都有一个点在里面

javascript - 如何制作快速的非抗锯齿HTML5canvas基本绘图功能?

c - 使用链表反向打印字符串

algorithm - 带有一些操作的双向链表