我正在准备面试的数据结构部分。我发现在现实世界中已经有关于二叉树应用的问题-What are the applications of binary trees?
我的问题不同-一个人实际上如何访问基于树的数据结构中的节点?
我了解BFS,DFS以及诸如此类的显式遍历节点,我感觉这不是现实世界的工作方式。人们是编写自己的遍历/搜索算法,还是依赖于数据库提供的迭代器和类似访问方法?
访问结构化树数据的高级抽象的名称是什么?我正在考虑迭代器,但不确定是否合适。
我正在寻找一种智能交流的方法。
答案 0 :(得分:1)
访问结构化的高级抽象的名称是什么 树数据(如果有)?
Iterator
更适合于线性数据结构,例如链表或动态数组。因为树是分层数据结构,所以parent()
,child()
,children()
,ancestor()
,descendent()
更合适。例如,如果您想实现一个文件系统,则将拥有RootDirectory
并获得您可能会调用的所有子目录,例如getAllSubDirectories()
,它们实际上是根目录的子目录。因此,命名实际上是特定于域的。
class Directory {
private Integer someAttribute;
....
....
private Directory parentDirectory;
List<Directory> subDirectories;
}
您可以抽象为迭代器,也可以在分层数据结构上调用iterator.hasNext()
或iterator.next()
。因此,例如,对于二叉搜索树,您可以抽象出一个迭代器,该迭代器可以在两个方向上以预顺序/有序/后顺序遍历对树进行迭代。参见UserForm1.Show。