创建具有最小深度的二叉搜索树

时间:2016-03-24 18:02:09

标签: c++ algorithm binary-search-tree depth

我的数字从1到31,我需要创建一个二叉搜索树,这些数字的深度最小。我在考虑将31/2划分为16并将其作为根。之后划分16/2然后插入8,但这似乎不起作用。是否有算法知道插入数字的顺序,以便树可以具有最小的深度?

1 个答案:

答案 0 :(得分:3)

如果你有数字1-31,31个数字,你想在根的左边有15个数字,在右边有15个数字。
所以根是16(不是31/2,而是31/2 + 1)。

重复相同的步骤,左子树有15个元素,所以你想在那个子树的每一边有七个数字。
所以左子树的根是8(这是15/2 + 1;这里有一个模式) 类似的计算给出了右子树的根。

等等。