将排序的数组插入二进制搜索树

爱琴海

我想实现一种将排序后的数组插入二叉搜索树中的算法,但我不希望以仅长到一侧的树结尾。

你有什么想法?

谢谢。

伯恩哈德·巴克

这应该为您提供平衡的树(以O(n)表示):

  1. 为数组中的中间元素构造一个节点,然后将其返回
    (这将是基本情况的根)。
  2. 从数组左半部分的1.开始重复,将返回值分配给根的左子节点。
  3. 从数组右半部分的1.开始重复,将返回值分配给根的右子级。

类似Java的代码:

TreeNode sortedArrayToBST(int arr[], int start, int end) {
  if (start > end) return null;
  // same as (start+end)/2, avoids overflow.
  int mid = start + (end - start) / 2;
  TreeNode node = new TreeNode(arr[mid]);
  node.left = sortedArrayToBST(arr, start, mid-1);
  node.right = sortedArrayToBST(arr, mid+1, end);
  return node;
}

TreeNode sortedArrayToBST(int arr[]) {
  return sortedArrayToBST(arr, 0, arr.length-1);
}

代码从这里派生

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制搜索树-插入

来自分类Dev

二进制搜索树-插入

来自分类Dev

二进制搜索树-排序?

来自分类Dev

在Haskell中实现二进制搜索树插入

来自分类Dev

在C ++中将节点插入二进制搜索树

来自分类Dev

为二进制搜索树编写插入方法

来自分类Dev

在二进制搜索树中插入重复的值

来自分类Dev

二进制搜索树的插入功能出错

来自分类Dev

重新排序二进制搜索树“就地”

来自分类Dev

使用二进制搜索递归将元素的插入位置返回到已排序的数组中

来自分类Dev

并行将排序后的数组转换为二进制搜索树函数

来自分类Dev

并行将排序后的数组转换为二进制搜索树函数

来自分类Dev

将元素插入二进制搜索树时出错

来自分类Dev

将char *插入C语言的二进制搜索树中

来自分类Dev

将节点插入到BALANCED二进制搜索树中

来自分类Dev

数组到二进制搜索树快速

来自分类Dev

Java-数字数组的可能排列将导致相同的二进制搜索树

来自分类Dev

排序数组并使用二进制搜索

来自分类Dev

二进制搜索树C

来自分类Dev

二进制搜索树创建

来自分类Dev

二进制搜索树Haskell

来自分类Dev

二进制搜索树语法

来自分类Dev

二进制搜索树?算法

来自分类Dev

如何使用二进制搜索找到将值插入有序数组的位置?

来自分类Dev

将数组插入二进制文件的函数

来自分类Dev

二进制搜索树插入中的指针和C中的搜索

来自分类Dev

数组中的二进制搜索

来自分类Dev

Java数组二进制搜索

来自分类Dev

用二进制搜索树构建AVL树