我在准备面试的数据结构部分。我看到了关于二叉树在现实世界中的应用的问题-- 二叉树的应用是什么?。
我的问题是不同的-如何实际访问基于树的数据结构中的节点?
我理解BFS,DFS等对于显式节点遍历,我有一种感觉,这不是真实世界的工作方式。人们是编写自己的遍历/搜索算法,还是依赖迭代器和数据库提供的类似访问方法?
访问结构化树数据的高级抽象(如果有的话)的名称是什么?我正在考虑迭代器,但不确定这是否是正确的术语。
我正在寻找一种在这个问题上聪明地交谈的方法。
发布于 2018-07-18 15:59:20
访问结构化树数据的高级抽象的名称是什么(如果有的话)?
Iterator更适合于线性数据结构,如链表或动态数组。由于树是一种分层的数据结构,所以parent()、child()、children()、ancestor()、descendent()更适合.例如,如果您想要实现一个文件系统,您将拥有RootDirectory并获取您可能调用的所有子目录,比如getAllSubDirectories(),它们实际上是根目录的子目录。因此,命名实际上是特定于域的。
class Directory {
   private Integer someAttribute;
   ....
   ....
   private Directory parentDirectory;
   List<Directory> subDirectories;
}您可以抽象为迭代器,也可以在分层数据结构上调用iterator.hasNext()或iterator.next()。例如,对于二进制搜索树,您可以抽象出一个迭代器,该迭代器可以在两个方向上以前置/无序/后继遍历的方式迭代树。见有序接班人。
https://stackoverflow.com/questions/51406105
复制相似问题