LeetCode 之 108. 将有序数组转换为二叉搜索树
2024-10-22 02:58:29
思路:
二叉搜索树的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;
基于题目给的是排序的数组,取中间点作为root,递归构造左右子数即可;
python/python3:
1 class Solution:
2 def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
3 if not nums:
4 return None
5 root_index = int(len(nums)/2)
6 root = TreeNode(nums[root_index])
7 root.left = self.sortedArrayToBST(nums[:root_index])
8 root.right = self.sortedArrayToBST(nums[root_index+1:])
9 return root
C++:
1 class Solution {
2 public:
3 TreeNode* sortedArrayToBST(vector<int>& nums) {
4 if(nums.size() == 0){
5 return NULL;
6 }
7 int root_index = nums.size()/2;
8 TreeNode* root = new TreeNode(nums[root_index]);
9 vector<int> left_nums(nums.begin(), nums.begin()+root_index);
10 vector<int> right_nums(nums.begin()+root_index+1, nums.end());
11 root->left = sortedArrayToBST(left_nums);
12 root->right = sortedArrayToBST(right_nums);
13 return root;
14 }
15 };
最新文章
- 用Middleware给ASP.NET Core Web API添加自己的授权验证
- Java易混淆的概率:成员变量、类变量、实例变量、局部变量
- TSql 巧用Alt 键
- pylab,matplotlib Invalid DISPLAY variable
- 用js判断页面是否加载完毕
- stdio.h----标准的输入输出函数
- 站点发布到 IIS 后,System.Data.SqlLite.dll 末找到
- linux_安装_安装编译phantomjs 2.0的方法_转
- dd命令详解
- ABP 教程文档 1-1 手把手引进门之 ASP.NET Core &; Entity Framework Core(官方教程翻译版 版本3.2.5)
- sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
- 自定义 绑定响应函数 解除响应函数 .addEventListener 兼容 .attachEvent
- python os模块详解
- 动态样式语言—LESS基础知识
- 震惊!1MB == 1000KB??
- Features + Git + Drush,打造你的Drupal开发与维护标准工作流
- SQL Server 索引结构及其使用(一)[转]
- Qt Quick Hello World hacking
- 不重启修改&#39;log_slave_updates&#39;变量
- java实验五实验报告