返回
手撸二叉树之最小高度树 | 拒绝套路,秀出你的技术 ╭( ′• o •′ )╭ | 8月更文挑战 **
前端
2023-10-03 06:32:08
各位看官,好呀!8 月更文挑战赛已经来到第 2 天啦。今天,咱们继续来刷二叉树。今天的话题是:如何构建最小高度的二叉搜索树 ?
序言
二叉搜索树 ,这种数据结构相信大家都不会陌生。它是一种有序 的树形结构,其中每个节点都包含一个值,并且该值大于其左子树中的所有值,而小于其右子树中的所有值。
而最小高度 的二叉搜索树,顾名思义,就是在这颗二叉搜索树中,从根节点到最深层的叶子节点的路径长度最短 。
正文
构建最小高度二叉搜索树的算法
给定一个有序整数数组,我们可以使用以下算法来构建一棵最小高度的二叉搜索树:
- 找到数组的中点 :将数组一分为二,中点的元素作为根节点。
- 递归构建左子树 :对于数组中小于根节点的元素,递归调用此算法构建左子树。
- 递归构建右子树 :对于数组中大于根节点的元素,递归调用此算法构建右子树。
代码实现(Java)
public TreeNode buildMinHeightBST(int[] nums) {
if (nums == null || nums.length == 0) {
return null;
}
return buildMinHeightBST(nums, 0, nums.length - 1);
}
private TreeNode buildMinHeightBST(int[] nums, int start, int end) {
if (start > end) {
return null;
}
int mid = (start + end) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = buildMinHeightBST(nums, start, mid - 1);
root.right = buildMinHeightBST(nums, mid + 1, end);
return root;
}
例子
给定数组 nums = [1, 2, 3, 4, 5, 6, 7]
,构建的最小高度二叉搜索树如下图所示:
4
/ \
2 6
/ \ / \
1 3 5 7
结语
掌握了构建最小高度二叉搜索树的算法,不仅可以提升你的算法功底,还能让你在面试中脱颖而出。毕竟,二叉搜索树是算法面试中的常客嘛!
好了,今天的分享就到这里啦。如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、转发。你的支持是我创作的动力!
如果你还有任何疑问,欢迎在评论区留言。我将尽我所能为你解答。