1

替代文字

这是列表列表还是只是一堆树(森林)?

4

2 回答 2

1

最好的数据结构是一棵树(正如你提到的,一个森林,因为这里有 2 个)但是,S 表达式可以很容易地表示树 - 而 S 表达式可以表示列表的列表,这相当于树。

您可以只采用列表形式的树的约定,例如第一个元素是当前节点,后面的元素是子节点。使用此约定,第一棵树将表示为:

(a1 (a1 (a11 (a111 a112 a113) a112) a12 a13))

第二个由

(a2 (a21 a211)(a22 a221)(a23 (a231 a2311)(a232 a2321)))

您还可以采用顶层是森林的约定,因此您只需将由上述 2 个列表组成的森林表示为 2 个树的列表。

如果您没有猜到,这里是一位前 Lisp 程序员 :)

于 2009-07-31T11:40:22.863 回答
1

取决于你想用它做什么。List<LinkedListTree>可能在一般情况下工作。如果您需要表示不相交的集合(如 Kruskal 的 MST 算法),您可能需要查看另一种数据结构

于 2009-07-31T11:36:24.180 回答