在lisp中创建树

时间:2015-03-04 22:34:17

标签: tree lisp common-lisp

我一直在对lisp中的树进行大量研究,并且我正在尝试解决uva问题(11695飞行计划(http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2742)以供参考)。我目前已经解决了大部分问题,但是我在第一个障碍时将输入更改为树有点难倒。 输入的示例将是

的形式

1 2

2 3

3 4

我在互联网上遇到过很多关于如何设置树的问题,但大多数情况下,它的数字都是在树上而不是这种格式。我也研究过图论,但这让我无处可去。

我在这方面取得的唯一进展是,我可能会将每个“路径”放入他们自己的列表中,并且基本观察到每个列表的第一个是父级,每个列表的第二个是是他们的孩子(也可能成为另一个孩子的父母)

如果有人对我如何处理这个问题有任何建议,那就太棒了。我还没有找到任何我能在网上申请的东西,所以我想我会找到其他人的想法。

我对Lisp相对较新,但我对它的工作方式有了相当好的理解。

1 个答案:

答案 0 :(得分:0)

您最初可以创建一个n个元素(城市)数组,这些数据最初都是NIL,然后为每个a / b创建

(push b (aref cities a))
(push a (aref cities b))

读取所有定义后,数组的k元素将是您可以直接从城市k到达的城市列表。