返回

手撸二叉树之最小高度树 | 拒绝套路,秀出你的技术 ╭( ′• o •′ )╭ | 8月更文挑战 **

前端

各位看官,好呀!8 月更文挑战赛已经来到第 2 天啦。今天,咱们继续来刷二叉树。今天的话题是:如何构建最小高度的二叉搜索树

序言

二叉搜索树 ,这种数据结构相信大家都不会陌生。它是一种有序 的树形结构,其中每个节点都包含一个值,并且该值大于其左子树中的所有值,而小于其右子树中的所有值。

最小高度 的二叉搜索树,顾名思义,就是在这颗二叉搜索树中,从根节点到最深层的叶子节点的路径长度最短

正文

构建最小高度二叉搜索树的算法

给定一个有序整数数组,我们可以使用以下算法来构建一棵最小高度的二叉搜索树:

  1. 找到数组的中点 :将数组一分为二,中点的元素作为根节点。
  2. 递归构建左子树 :对于数组中小于根节点的元素,递归调用此算法构建左子树。
  3. 递归构建右子树 :对于数组中大于根节点的元素,递归调用此算法构建右子树。

代码实现(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

结语

掌握了构建最小高度二叉搜索树的算法,不仅可以提升你的算法功底,还能让你在面试中脱颖而出。毕竟,二叉搜索树是算法面试中的常客嘛!

好了,今天的分享就到这里啦。如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、转发。你的支持是我创作的动力!

如果你还有任何疑问,欢迎在评论区留言。我将尽我所能为你解答。