【发布时间】:2018-11-27 21:13:07
【问题描述】:
我在考试中被问到以下问题:
此数据结构的名称是什么(用于填充 数据结构,如教科书所述)?
我回答说是二叉树,但是我的教授标错了,说是二叉搜索树。 我的问题:二叉搜索树不是二叉树的“子类别”吗?我的想法是,在他的问题的上下文中,二叉树是可能的最广泛的答案(因此是最安全的)。
我在网络上甚至在这个网站上看到了对类似问题的不同答案,有些人甚至暗示 BST 只是二叉树的一种算法(相对于独立的数据结构)。
【问题讨论】:
-
我猜你应该注意到节点已排序。一个相关的问题是:除了排序之外,二叉树还有其他用途吗?
-
@Kingsley 我必须假设这是他希望我们注意的,但第一部分的措辞是我最感兴趣的。另外,你的意思是说你觉得他暗示了 bst?
-
是的,我猜他暗示这是 BST。但我也同意标记你错误是分裂头发。如果答案是“树”怎么办——这也是正确的吗?也许他真的想要那里的搜索。
-
放松,孩子。 10年后,这一切都不会产生丝毫的不同。我同意这是一个 bad 问题。二叉搜索树看起来与纸上的常规二叉树没有任何不同。我们如何知道树的预期用途是搜索?可能是节点按巧合排序。
-
@Kingsley:是的,未排序的二叉树也有一些用途。例如,“绳索”数据结构使用有序但未排序的二叉树(每个节点都包含较大整体序列的子序列)。即使是经典的自平衡算法(RB 和 AVL)也并不严格要求排序,排序只是确定新节点在树中的哪个位置的常用机制,但其他方案也是可能的(以当前插入符号位置为例)。跨度>
标签: c++ binary-tree binary-search-tree