您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
将有序数组转换为二叉搜索树(图文)
第十三双眼睛2023-11-27【数据结构与算法】人已围观
简介将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
思路:将数组的中间元素当成根节点,然后将中间元素的左边部分数组去构造根节点的左子树,将中间元素的右边部分数组去构造根节点的右子树,里面的逻辑也是一样,因此可以递归实现。代码如下:
public static TreeNode method1(int[] nums) { return test(nums, 0, nums.length - 1); } public static TreeNode test(int[] nums, int start, int end) { if (start > end) { return null; } int mid = (start + end) / 2; TreeNode root = new TreeNode(nums[mid]); // 构建左子树 root.left = test(nums, start, mid - 1); root.right = test(nums, mid + 1, end); return root; } |
Tags:
很赞哦! ()
上一篇:二叉树的最大深度(图文)
下一篇:平衡二叉树(图文)
相关文章
随机图文
-
对称二叉树(图文)
对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 -
删除有序数组中的重复项(图文)
删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。 返回 k 。 -
合并两个有序数组(图文)
合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 -
颠倒二进制位(图文)
颠倒二进制位 颠倒给定的 32 位无符号整数的二进制位。