面试准备-现实世界中二进制搜索树中的一个访问节点如何?

时间:2018-07-18 15:44:26

标签: search data-structures iterator binary-tree

我正在准备面试的数据结构部分。我发现在现实世界中已经有关于二叉树应用的问题-What are the applications of binary trees?

我的问题不同-一个人实际上如何访问基于树的数据结构中的节点?

我了解BFS,DFS以及诸如此类的显式遍历节点,我感觉这不是现实世界的工作方式。人们是编写自己的遍历/搜索算法,还是依赖于数据库提供的迭代器和类似访问方法?

访问结构化树数据的高级抽象的名称是什么?我正在考虑迭代器,但不确定是否合适。

我正在寻找一种智能交流的方法。

1 个答案:

答案 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