当前位置: 首页 > news >正文

网站导航栏的作用3a汽车集团公司网络营销方案

网站导航栏的作用,3a汽车集团公司网络营销方案,有哪些网站可以做ps挣钱,汕头网站建设搭建将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums ,其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入:nums [-10,-3,0,5,9…

将有序数组转换为二叉搜索树

  • https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/

描述

  • 给你一个整数数组 nums ,其中元素已经按 升序 排列
  • 请你将其转换为一棵 平衡 二叉搜索树

示例 1

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案

示例 2

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

提示

  • 1 <= nums.length <= 1 0 4 10^4 104
  • - 1 0 4 10^4 104 <= nums[i] <= 1 0 4 10^4 104
  • nums 按 严格递增 顺序排列

Typescript 版算法实现


1 ) 方案1: 中序遍历,总是选择中间位置左边的数字作为根节点

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function sortedArrayToBST(nums: number[]): TreeNode | null {return helper(nums, 0, nums.length - 1);
}function helper(nums: number[], left: number, right: number): TreeNode | null {if (left > right) return null;// Preventing overflow for large arrays by using the following formulalet mid = left + Math.floor((right - left) / 2);let root = new TreeNode(nums[mid]);root.left = helper(nums, left, mid - 1);root.right = helper(nums, mid + 1, right);return root;
}

2 ) 方案2: 中序遍历,总是选择中间位置右边的数字作为根节点

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function sortedArrayToBST(nums: number[]): TreeNode | null {return helper(nums, 0, nums.length - 1);
}function helper(nums: number[], left: number, right: number): TreeNode | null {if (left > right) return null;// 总是选择中间位置右边的数字作为根节点let mid = Math.floor((left + right + 1) / 2); // 加1保证了当长度为偶数时取右中位数let root = new TreeNode(nums[mid]);root.left = helper(nums, left, mid - 1);root.right = helper(nums, mid + 1, right);return root;
}

3 ) 方案3: 中序遍历,选择任意一个中间位置数字作为根节点

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function sortedArrayToBST(nums: number[]): TreeNode | null {return helper(0, nums.length - 1);function helper(left: number, right: number): TreeNode | null {if (left > right) return null;// 选择任意一个中间位置数字作为根节点let mid: number;if ((right - left) % 2 === 0) {// 如果左右边界之间是奇数个元素,只有一个中间值mid = Math.floor((left + right) / 2);} else {// 如果左右边界之间是偶数个元素,随机选择一个中间值mid = left + Math.floor((right - left + Math.random()) / 2);}const root = new TreeNode(nums[mid]);root.left = helper(left, mid - 1);root.right = helper(mid + 1, right);return root;}
}

4 ) 方案4: 简单版本

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function sortedArrayToBST(nums: number[]): TreeNode | null {if(!nums.length) return null// 二叉搜索树的中序遍历,就是升序列表// 数组中间的位置,可以作为树的根节点const mid = Math.floor(nums.length / 2)const root = new TreeNode(nums[mid])root.left = sortedArrayToBST(nums.slice(0,mid))root.right = sortedArrayToBST(nums.slice(mid+1))return root
}
http://www.dt0577.cn/news/35478.html

相关文章:

  • 怎样用模块做网站软文写作经验
  • html5 手机网站开发seo门户网站优化
  • 城阳网站建设seo关键词排名查询
  • 做网站要实名吗国际新闻稿件
  • 潍坊大宇网络网站建设seo引擎优化外包
  • 如何做网站关键词霸屏批量关键词调排名软件
  • 哈尔滨网站建设科技公司整合营销活动策划方案
  • 网站开发与建设课程设计文山seo
  • 个人网站备案可以做博客吗怎么推广一个app
  • 网站建设实施过程白杨seo教程
  • 做那个的视频网站百度推广400客服电话
  • 网站轮播图怎么设计网站推广名词解释
  • 专做男装的网站seo教育
  • 网站开发如何适应手机现实要求苏州百度推广分公司电话
  • 做类似电驴网站百度指数搜索热度
  • 深圳网站建设服务哪家专业seo方案
  • 湖南建工交通建设有限公司网站站长工具seo综合查询5g
  • 账号注册登录立即注册真实有效的优化排名
  • 模板式网站建设sem托管公司
  • 没备案的网站怎么测试seo关键词优化怎么做
  • 网站建设与维护下载市场营销计划书模板
  • 网站设计机构文档免费软文推广平台
  • 网站建设与管理教程 全套郑州网站seo优化公司
  • 招商网站建设网站生成器
  • 英文网站建设szjijie谷歌浏览器下载电脑版
  • 骏域网站建设专家广州seo检查工具
  • 搭建小程序要钱吗优化设计电子版在哪找
  • 网站后台内容更换怎么做济南优化网页
  • 做网站销售经常遇到的问题军事新闻 今日关注
  • 网站制作公司都还赚钱吗结构优化