【发布时间】:2020-05-08 21:17:34
【问题描述】:
我有一个具有这样结构和规则的图表:
- 是有向连通循环图(从上到下节点的方向)。
- 任何父节点都可以有 0、1 或 2 个子节点。
- 子节点可以有 1 个或 2 个父节点(根节点
n_id_1没有父节点)。 - 有左孩子和右孩子。父母可以有右孩子而没有左孩子,反之亦然(参见
n_id_9和n_id_2)。 - 如果父级 (
n_id_9) 有左分支 (n_id_3-n_id_8) 且没有右分支,则它始终成为左分支 (n_id_11) 子级的父级。
此时我看到了 2 个数据结构的解决方案:
选项 1. 像这样制作一个有向连通循环图(最明显的方式):
parent children
1 2
2 3, 11
3 5, 6
5 9
6 4
9 10, 12
4 7
12 8
7 8
8 11
我认为它的缺点 - 难以渲染和维护。
选项 2。制作一个有向连通无环图,其中每个父母可以有 3 个孩子:左、右和第三个(不知道如何更好地称呼它)。例如,n_id_2 有 左孩子 n_id_3,没有 右孩子 和 第三个孩子 n_id_11。对于失踪的孩子,我们应该指定null。
parent children (left, right, third)
1 2, null, null
2 3, null, 11
3 5, 6, 8
5 9, null, null
6 4, null, null
9 null, 10, 12
4 7, null, null
12 null, null, null
7 null, null, null
8 null, null, null
现在我们有了一个没有循环的树,因此渲染和遍历数据要容易得多。我看到了这个缺点 - 如果由于某种原因规格会改变 - 可能更难改变。我更喜欢这个。
所以问题是:
还有其他解决方案吗?
您如何看待我提供的解决方案?
感谢您的评价。
【问题讨论】:
标签: algorithm performance optimization graph-theory