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

威客网站系统公关公司

威客网站系统,公关公司,wordpress防止频繁访问,做视频哪个网站素材好期末考试完毕,假期学习开始! —— 25.1.7 108. 将有序数组转换为二叉搜索树 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] …

期末考试完毕,假期学习开始!

                                —— 25.1.7

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

给你一个整数数组 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 <= 104
  • -104 <= nums[i] <= 104
  • nums 按 严格递增 顺序排列

方法一 递归

思路与算法

二叉搜索树的性质:对于树中的每个节点:① 若其左子树不为空,则左子树上所有节点的值均小于该节点的值。② 若其右子树不为空,则右子树上所有节点的值均大于该节点的值。③ 它的左子树和右子树也都是二叉搜索树

将数组/列表长度不断进行二分,使得数组/列表长度的1/2处(向下取整)作为树和每个子树的根节点,而小于数组/列表长度一半的和大于数组/列表长度一半的分别作为左子树和右子树,由二叉搜索树的性质,不断进行递归,最终使得数组/列表为空时停止递归,这样就可以得到由数组/列表转换后的二叉搜索树


Python实现

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:if not nums:return Nonem = len(nums) // 2return TreeNode(nums[m], self.sortedArrayToBST(nums[:m]), self.sortedArrayToBST(nums[m + 1:]))


Java实现

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode sortedArrayToBST(int[] nums) {return dfs(nums, 0, nums.length);}private TreeNode dfs(int[] nums, int left, int right) {if (left == right) {return null;}int m = (left + right) / 2;return new TreeNode(nums[m], dfs(nums, left, m), dfs(nums, m + 1, right));}
}


注:

① Java中的数组数据结构,在Python中使用列表的数据结构 

② python中递归的遍历,支持列表传参时索引使用 :m m+1:

:m指的是从列表起始位置遍历到m-1的位置,m+1:指的是从m+1的位置遍历到列表尾部,列表遍历时的索引是左闭右开

③ Java由于遍历时不支持数组传参时直接的切片操作,所以我们创建一个private私有权限的递归方法,然后最后将结果传给主函数,由主函数进行返回

http://www.hengruixuexiao.com/news/50106.html

相关文章:

  • 福州建设网站公司模板网站哪个好
  • 遵义北京网站建设深圳推广平台有哪些
  • 企业官网建站步骤自助优化排名工具
  • 一起做网店的类似网站seo研究中心好客站
  • 保定有哪些做网站的地方搜索引擎营销的案例有哪些
  • 南皮做网站的吸引人的微信软文范例
  • 网站有几类百度有效点击软件
  • 做网站的像素是多少钱自动点击器app
  • html 手机网站开发seminar
  • 查询网站备案直通车优化推广
  • 做网站需要的流程郑州seo关键词优化公司
  • 常州网站制作公司排名汕头seo排名公司
  • 图片素材网站模板免费网络营销软件
  • 网站的流量有什么用发布平台
  • 公司创建aso优化怎么做
  • 重庆网站策划2024新闻热点事件
  • 贵阳哪里做网站珠海百度搜索排名优化
  • 营销型网站推广服务seo是啥意思
  • 织梦做的网站在百度搜索页劫取搜狗搜索引擎推广
  • 郑州网站制作汉狮网络百度免费推广怎么做
  • 商城网站开发与设计关键词排名零芯互联排名
  • 廊坊网站推广seo整站优化方案
  • 视频网站搭建网址安全检测中心
  • 怎么介绍vue做的购物网站项目百度推广账号怎么申请
  • asp.net做网站seo文案范例
  • 石家庄大型网络公司seol英文啥意思
  • 外贸营销型建站公司官网怎么做
  • 蛋糕电子商务网站建设方案全国十大跨境电商公司排名
  • 为什么凡科网做的网站无法搜索百度网站关键词优化
  • 做网页兼职网站有哪些江门关键词优化公司