数据结构:与树类似的图形 - 但不是树

时间:2013-07-30 17:02:22

标签: data-structures graph

我在C中实现了一个基于一系列链接列表的数据结构,它看起来与树类似 - 但不足以被称为这样,因为理论上它允许存在循环。以下是节点的基本概述:

  • 有一个可识别的根,没有父节点或兄弟;
  • 每个节点都包含一个指向其“父亲”的指针,最近的“兄弟”和他的第一个“孩子”;
  • 有没有孩子和兄弟的“外部”节点。

如何命名这样的数据结构?它不能是树,因为即使指针被清楚地标记和使用不同,像father-> child-> brother-> father这样的循环也可能存在。我的问题是:“父亲”,“孩子”和“兄弟”等术语可以在图形的上下文中使用,还是只保留给树木?经过相当多的研究后,我仍然无法澄清这件事。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我会说你仍然称它为树,因为基础是树数据结构。我的主张优先:“Patricia Tries”被称为树,即使它们的叶节点可能指向树(创建周期)。我相信还有其他例子。

听起来你的附加链接基本上只是为了方便,可以隐式确定(而不是明确存储)。通过显式存储它们,您可以在树操作(插入,删除等)上强加其他不变量,但不会影响基础组织,即树。

正是因为您分别命名和处理这些额外的链接,它们可以被认为是树顶上的“叠加层”。

最后,如果它适合你,你所谓的它或它属于什么类别并不重要。读一本像Sedgewick的“Algorithms in C”这样的书,你会发现那里有大量的数据结构,发明你自己的数据结构并没有错!

还有一点:树是图的一个特例,所以将它称为图形(或使用图形算法)也没有错。