为了账号安全,请及时绑定邮箱和手机立即绑定

递归最小树创建函数有问题吗?

递归最小树创建函数有问题吗?

千巷猫影 2021-08-13 15:53:28
来自 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;}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信