我在C中实现了一个基于一系列链接列表的数据结构,它看起来与树类似 - 但不足以被称为这样,因为理论上它允许存在循环。以下是节点的基本概述:
如何命名这样的数据结构?它不能是树,因为即使指针被清楚地标记和使用不同,像father-> child-> brother-> father这样的循环也可能存在。我的问题是:“父亲”,“孩子”和“兄弟”等术语可以在图形的上下文中使用,还是只保留给树木?经过相当多的研究后,我仍然无法澄清这件事。
提前致谢!
答案 0 :(得分:0)
我会说你仍然称它为树,因为基础是树数据结构。我的主张优先:“Patricia Tries”被称为树,即使它们的叶节点可能指向树(创建周期)。我相信还有其他例子。
听起来你的附加链接基本上只是为了方便,可以隐式确定(而不是明确存储)。通过显式存储它们,您可以在树操作(插入,删除等)上强加其他不变量,但不会影响基础组织,即树。
正是因为您分别命名和处理这些额外的链接,它们可以被认为是树顶上的“叠加层”。
最后,如果它适合你,你所谓的它或它属于什么类别并不重要。读一本像Sedgewick的“Algorithms in C”这样的书,你会发现那里有大量的数据结构,发明你自己的数据结构并没有错!
还有一点:树是图的一个特例,所以将它称为图形(或使用图形算法)也没有错。