原题链接

思路:

二叉搜索树的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;

基于题目给的是排序的数组,取中间点作为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 };

最新文章

  1. 用Middleware给ASP.NET Core Web API添加自己的授权验证
  2. Java易混淆的概率:成员变量、类变量、实例变量、局部变量
  3. TSql 巧用Alt 键
  4. pylab,matplotlib Invalid DISPLAY variable
  5. 用js判断页面是否加载完毕
  6. stdio.h----标准的输入输出函数
  7. 站点发布到 IIS 后,System.Data.SqlLite.dll 末找到
  8. linux_安装_安装编译phantomjs 2.0的方法_转
  9. dd命令详解
  10. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core &amp; Entity Framework Core(官方教程翻译版 版本3.2.5)
  11. sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
  12. 自定义 绑定响应函数 解除响应函数 .addEventListener 兼容 .attachEvent
  13. python os模块详解
  14. 动态样式语言—LESS基础知识
  15. 震惊!1MB == 1000KB??
  16. Features + Git + Drush,打造你的Drupal开发与维护标准工作流
  17. SQL Server 索引结构及其使用(一)[转]
  18. Qt Quick Hello World hacking
  19. 不重启修改&#39;log_slave_updates&#39;变量
  20. java实验五实验报告

热门文章

  1. 关闭内核Debug_log打印!
  2. JIT和AOT的区别
  3. Zookeeper ZAB协议-客户端源码解析
  4. 动态规划-3-RNA的二级结构
  5. 阻止form表单默认跳转
  6. jQuary学习(一)
  7. Unity通用渲染管线Shader日志输出工具
  8. 【转载】ISTQB AL-TA/TTA连载系列06:白盒测试技术的精炼总结
  9. Word06 黑客技术office真题
  10. Docker-Compose编排与部署