Leetcode108. 将有序数组转换为二叉搜索树
因为数组是有序的,可以递归的选取根节点构建子树。
JAVA:
public final TreeNode sortedArrayToBST(int[] nums) { if (null == nums) return null; return this.build(nums, 0, nums.length - 1); } private TreeNode build(int[] nums, int left, int right) { if (left > right) return null; if (left == right) return new TreeNode(nums[left]); int mid = (left + right) / 2; TreeNode root = new TreeNode(nums[mid]); root.left = build(nums, left, mid - 1); root.right = build(nums, mid + 1, right); return root; }
JS:
var sortedArrayToBST = function (nums) { if (!nums) return null; return build(nums, 0, nums.length - 1); }; var build = function (nums, left, right) { if (left > right) return null; if (left == right) return new TreeNode(nums[left]); let mid = Math.floor((left + right) / 2); let root = new TreeNode(nums[mid]); root.left = build(nums, left, mid - 1); root.right = build(nums, mid + 1, right); return root; }
C:
struct TreeNode *build(int *nums, int numsSize, int left, int right) { if (left > right) return NULL; if (left == right) { struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode)); node->val = nums[left]; node->left = NULL; node->right = NULL; return node; } int mid = (left + right) / 2; struct TreeNode *root = (struct TreeNode *)malloc(sizeof(struct TreeNode)); root->val = nums[mid]; root->left = build(nums, numsSize, left, mid - 1); root->right = build(nums, numsSize, mid + 1, right); return root; } struct TreeNode *sortedArrayToBST(int *nums, int numsSize) { struct TreeNode *root = build(nums, numsSize, 0, numsSize - 1); return root; }
Python3:
class Solution: def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]: return self.build(nums, 0, len(nums) - 1) def build(self, nums: List[int], left: int, right: int) -> Optional[TreeNode]: if left > right: return None if left == right: return TreeNode(nums[left]) mid = (left + right) // 2 root = TreeNode(nums[mid]) root.left = self.build(nums, left, mid - 1) root.right = self.build(nums, mid + 1, right) return root
当你看清人们的真相,于是你知道了,你可以忍受孤独
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-11-09 Leetcode 542 01矩阵 图的按距离遍历