将排序的数组插入二进制搜索树 [英] Insert sorted array into binary search tree

查看:73
本文介绍了将排序的数组插入二进制搜索树的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to implement an algorithm that inserts sorted arrays into binary search trees but I don't want ending up with a tree that only grows to one side.

您有任何想法吗?

谢谢。

推荐答案

给你一棵平衡树(在O(n)中):

This should give you a balanced tree (in O(n)):


  1. 为数组中的中间元素构造一个节点并返回它

    (这将是基本情况的根)。

  2. 从数组左半部分的1.开始重复,将返回值分配给数组的左子元素

  3. 从数组右半边的1.开始重复,将返回值分配给根的右子级。

类似于Java的代码:

Java-like code:

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);
}

此处

这篇关于将排序的数组插入二进制搜索树的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆