LeetCode 108. Convert Sorted Array to Binary Search Tree
题目:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:
将一个已排序的数组构成一个高度平衡的二叉排序树。每次中点为根结点,然后递归调用中点左边剩下的和右边剩下的元素。
代码1:
输出结果: 12ms
代码2:
没有代码1快。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {return dfs(nums,0,nums.size()-1);//调用函数}TreeNode* dfs(vector<int>& nums,int left,int right){if(left>right){//如果left比right大,直接返回NULLreturn NULL;}int mid=(right-left+1)/2+left;//计算中点的索引TreeNode* root=new TreeNode(nums[mid]);//将中点作为当前的根结点root->left=dfs(nums,left,mid-1);//递归调用左子数组和右子数组root->right=dfs(nums,mid+1,right);return root;}
};
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {if(nums.size()==0){//如果当前nums的大小为0,直接返回NULLreturn NULL;}if(nums.size()==1){//如果当前nums的大小为1,将这个数构成一个新结点并返回return new TreeNode(nums[0]);}int middle=nums.size()/2;//计算中点在数组中下标TreeNode *root=new TreeNode(nums[middle]);//将中点作为当前的根结点vector<int> lefttree(nums.begin(),nums.begin()+middle);//分别构成左右子数组vector<int> righttree(nums.begin()+middle+1,nums.end());root->left=sortedArrayToBST(lefttree);//递归调用来构成左子树和右子树root->right=sortedArrayToBST(righttree);return root;}
};
输出结果: 19ms
LeetCode 108. Convert Sorted Array to Binary Search Tree相关推荐
- 【数组递归构造二叉树】LeetCode 108. Convert Sorted Array to Binary Search Tree
LeetCode 108. Convert Sorted Array to Binary Search Tree Solution1:我的答案 构造二叉树利用递归 /*** Definition fo ...
- LeetCode: 108. Convert Sorted Array to Binary Search Tree
题目 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. ...
- leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)
题目 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题解 经典二分,不解释了,直接看代码 /*** ...
- leetcode python3 简单题108. Convert Sorted Array to Binary Search Tree
1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百零八题 (1)题目 英文: Given an array where elem ...
- 108. Convert Sorted Array to Binary Search Tree
一.题目 1.审题 2.分析 给出一个有序的不重复的整形数组,组成一个二路平衡二叉树(左右子树高度差不超过1). 二.解答 1.思路: 方法一. 采用递归的方式.(像二分查找) ①.为了保持平衡,查找 ...
- LeetCode: 109. Convert Sorted List to Binary Search Tree
题目 Given a singly linked list where elements are sorted in ascending order, convert it to a height b ...
- Convert Sorted Array to Binary Search Tree - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Convert Sorted Array to Binary Search Tree - LeetCode 注意点 不要访问空结点 题目要求的是平衡二叉搜 ...
- LeetCode: Convert Sorted Array to Binary Search Tree 解题报告
Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...
- 【链表递归构造二叉树】LeetCode 109. Convert Sorted List to Binary Search Tree
LeetCode 109. Convert Sorted List to Binary Search Tree Solution1:我的答案 偷鸡摸狗的做法 /*** Definition for s ...
最新文章
- NAT技术解决了IPv4地址短缺的问题,假设内网的地址数是m,而外网地址数n,若mn,则这种技术叫做(66),若mn,且n=1,则这种技术这叫做(67)。【答案】A C
- JSP页面元素的解析顺序
- 压缩感知 compressive sensing(转)
- 提供《华容道与数据结构》代码供测试
- Error loading MySQLdb module: No module named MySQLdb
- 数据库设计的第三范式
- SAP C4C url mashup跳转原理 - C4C UI到Mashup的参数传递是如何进行的
- 60-330-000-使用-窗口TopN分析与实现
- 【实用工具】之CSDN表格模板
- yield用法详解——最简单,最清晰的解释
- 游戏筑基开发之简单迷宫行走(内附碰撞检测底层逻辑)
- split方法在低版本IE浏览器上无法解析的问题
- SPSS入门教程—日期类型的变量转换
- python 面向对象编程;(搬家具)
- linux下虚拟安装cad,LeoCAD下载 LeoCAD(虚拟乐高模型创建工具) 32位/64位 Linux版 v18.01 官方英文安装版 下载-脚本之家...
- php信鸽针对别名,【经验】阿翁:信鸽回血留种公式(图)
- p-sum结构解释+代码 二叉区间树
- 英语四六级保命班笔记
- 达梦数据库修改字段(列)(基表修改语句)
- 阿里云云栖社区合作指南
热门文章
- 多级队列调度算法可视化界面_进程调度功能由操作系统内核的进程调度程序完成...
- 30天自制操作系统 pdf_30天自制操作系统:第三天:系统引导完成
- PyG图神经网络框架torch-geometric安装
- linux那些事之LRU(1)
- 三种方法可以使用StyleGAN预先训的生成器
- knime实现python编写脚本
- 广州python平均薪资_11 月全国程序员平均工资出炉,看看的你得薪资跟上平均水平了吗。...
- jQueryEasyUI框架 - panel 选项卡高度自适应
- Z-BlogPHP导航主题模版源码 绿色完美版
- PHP格子在线自动发卡网源码 全新一键安装版