Binary search tree 具有多项选择的BST构造
我遇到了以下问题: 根据以下值列表构建的BST高度Binary search tree 具有多项选择的BST构造,binary-search-tree,Binary Search Tree,我遇到了以下问题: 根据以下值列表构建的BST高度10,5,4,3,2,1,0,9,13,11,12,16,20,30,40,14: A) 5 B) 6 C) 7 D) 8 现在,我可以毫无问题地构建树,因为插入值的选择不多,因此从第一个值10到第十一个值12我的树如下所示: 10 / \ 5 13
10,5,4,3,2,1,0,9,13,11,12,16,20,30,40,14
:
A) 5
B) 6
C) 7
D) 8
现在,我可以毫无问题地构建树,因为插入值的选择不多,因此从第一个值10
到第十一个值12
我的树如下所示:
10
/ \
5 13
/ \ /
4 9 11
/ \
3 12
/
2
/
1
/
0
但是在那之后,现在我必须添加值16
,我有两个选择,使其成为值12
的正确子级,或者使其成为值13
的正确子级,高度将根据此选择而不同,那么正确的方法是什么呢?A是A(即每个节点最多有2个子级)其中,对于树中的每个节点,以该节点为根的左子树中的所有节点都小于该子树的根,而以该节点为根的右子树中的所有节点都大于该子树的根
到目前为止,您的演练假设一个“幼稚”的插入算法,该算法不尝试平衡树,而是通过递归地比较根中的每个节点来按顺序插入节点。在典型情况下,您可能不希望构建这样一个不平衡的树,因为操作的性能下降到O(n)时间,而不是最佳O(log(n))时间,这违背了BST结构的目的
将16
设置为12
的右子级将是无效的选择,因为16
作为13
的左子级违反了BST属性。根据定义,每次插入都必须放在一个位置,所以没有选择,至少遵循这种简单的算法
按照您的方法,应该清楚的是,由于左分支不平衡,在任何情况下,最终高度(最长根到叶路径)都将为7
然而,如果问题是找到一棵最优树的高度,那么正确答案是5。下面说明了可以从给定数据构建的一个(即,除底部标高外,每个标高都已满,并且该标高的所有元素都位于左侧):
11
+---------------+
4 16
+------+ +-------+
2 9 14 30
+---+ +---+ +---+ +---+
1 3 5 10 12 13 20 40
+--
0
查看数据结构,了解有关可以构建这样一棵树的算法的更多信息。是否有关于此问题的更多信息?可以从一个数字列表(如提供的数字列表)构造多个唯一的BST。如果有其他限制或更多信息,这可能有助于从提供的答案中揭示更多关于正确答案的信息。不是真的不,我正在为即将到来的考试学习,这是上一年的问题,所以这里缺少了一些信息对吗?问题是什么是插入算法?@ggorlen他们没有说任何关于插入算法的事情!因为将
16
设为左子12
的右子级将使其成为13
的间接左子级正确??是的,BST的定义是根的左子树中的每个元素都小于根,右子树中的每个元素都大于根,对于树中的所有节点。非常感谢!我不是这样想的没问题。我更新了帖子以添加更多信息。使用最佳插入算法,可以构建高度为5的树,也可以很容易地看到6和8的可能高度。