如何有效地走多种类型的树?

时间:2011-10-15 08:10:04

标签: c++ algorithm containers complexity-theory

我们都知道我们应该使用列表,双端队列或其他对象而不是使用经典链接列表,但我想的方式是链接列表。

我有一种我称之为ABC的类型。我可以通过ABC root访问所有内容。 ABC类型可以容纳0个或多个ABCs。它还可以保持DE,FGH,D,E,F,G,H型.DE也可以保持D型和E型.FGH可以保持FG,F,G,H。FG认为......你明白了。这些对象也可以包含0或多个该类型及其子类型。

我面临的问题是如何以一种方式写这个,如果我在F型,我可以调用parent()并回到根类型ABC?让我们忘记现在的类型,并假设一切都是类型BASE。我如何用C ++编写这个树?我在考虑做这样的事情

class Base{
    deque<Base*> children
    Base*parent;
}

但这感觉就像一个链接列表。主要是因为走在树上只是看指针之后的指针,这正是链接列表的作用,走在树上是指针后的指针。有没有一种有效的方法来保持树木和走路?我的应用程序是CPU和内存绑定所以我不知道我想做哪个权衡。我如何保存这些数据?

1 个答案:

答案 0 :(得分:1)

  

我们都知道我们应该使用列表或其他对象而不是使用   经典链接列表

呃,哇?

链接列表没有最大的用途evar,但是当你需要类似你拥有的东西时,这是一个DAG,那么几乎没有别的方法可以做到。

只需使用指针。