来自 Cracking the Coding Interview 中的练习:给定一个具有唯一整数元素的排序(递增顺序)数组,编写一个算法,该算法将创建一个高度最小的二叉搜索树。算法结构为:将数组的中间元素(是根)插入树中。插入(到左子树)左子数组元素。插入(到右子树)右子数组元素。递归。但我认为实际的代码有问题。给定一个包含 {6, 7, 8, 9, 10} 的数组,它会将 6 两次插入左子树。这是因为 int mid = (start + end) / 2; 代码永远不会将节点 7 插入左子树,因为它位于索引 1 处,并且 mid 变量不会计算为 1。Node createMinimalBST(int arr[]) { return createMinimalBST(array, 0, array.length - 1);}Node createMinimalBST(int arr[], int start, int end) { if (end < start) { return null; } int mid = (start + end) / 2; Node n = new Node(arr[mid]); n.left = createMinimalBST(arr, start, mid - 1); n.right = createMinimalBST(arr, mid + 1, end); return n;}
添加回答
举报
0/150
提交
取消