Ege*_*Ege 7 sorting algorithm tree binary-tree binary-search-tree
我想实现一个算法,将已排序的数组插入到二叉搜索树中,但我不希望最终得到一个只生长到一侧的树.
你有什么想法?
谢谢.
Duk*_*ing 11
这应该给你一个平衡的树(在O(n)中):
类似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);
}
Run Code Online (Sandbox Code Playgroud)
代码源自此处.