Binary search tree 具有多项选择的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

我遇到了以下问题: 根据以下值列表构建的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
                         / \     /
                        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的可能高度。