gpt4 book ai didi

algorithm - 将排序数组插入二叉搜索树

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:35:34 24 4
gpt4 key购买 nike

我想实现一种将排序数组插入二叉搜索树的算法,但我不想以一棵只向一侧生长的树结束。

你有什么想法吗?

谢谢。

最佳答案

这应该给你一个平衡的树(在 O(n) 中):

  1. 为数组中的中间元素构造一个节点并返回
    (这将是基本案例中的根)。
  2. 从1.开始重复数组的左半部分,将返回值赋给根的左 child 。
  3. 在数组的右半部分从1.开始重复,将返回值赋给根的右 child 。

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

代码源自here .

关于algorithm - 将排序数组插入二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19399747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com