108. Convert Sorted Array to Binary Search Tree

这个题使用二分查找,主要要注意边界条件。

如果left > right,就返回NULL。每次更新的时候是mid-1,mid+1。

自己推一下基本就可以验证了。

class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return ToBST(nums,,nums.size() - );
}
TreeNode* ToBST(vector<int>& nums,int start,int end){
if(start > end)
return NULL;
int mid = start + (end - start)/;
TreeNode* root = new TreeNode(nums[mid]);
root->left = ToBST(nums,start,mid-);
root->right = ToBST(nums,mid+,end);
return root;
}
};

109. Convert Sorted List to Binary Search Tree

https://www.cnblogs.com/grandyang/p/4295618.html

这个题还是用二分查找,每次用双指针找中间的位置,然后递归。

注意end节点是NULL,并且每次中间的位置mid也会成为左子树的end节点。

class Solution {
public:
TreeNode* sortedListToBST(ListNode* head) {
return sortedList(head,NULL);
}
TreeNode* sortedList(ListNode* start,ListNode* end){
if(start == end)
return NULL;
ListNode* slow = start;
ListNode* fast = start;
while(fast->next != end && fast->next->next != end){
slow = slow->next;
fast = fast->next->next;
}
TreeNode* mid = new TreeNode(slow->val);
mid->left = sortedList(start,slow);
mid->right = sortedList(slow->next,end);
return mid;
}
};

最新文章

  1. xDebug + webgrind 对 php 程序进行性能分析
  2. TCP/IP 协议中的滑动窗口
  3. Ansible-Tower快速入门-7.配置实时事件【翻译】
  4. DML以及DQL的使用方法
  5. OC基础(20)
  6. 多线程程序设计学习(3)immutable pattern模式
  7. debian下Vnc
  8. [swustoj 191] 迷宫逃离
  9. 《一起》Alpha版软件使用说明
  10. Hibernate框架进阶(上篇)
  11. 微信小程序之上传下载交互api
  12. OSX 鼠标和键盘事件
  13. lua 的元表与元方法
  14. [svc]数字证书基础知识
  15. 利用Python进行自然语言处理(笔记)第一章
  16. 一道cf水题
  17. Debug记录(1)
  18. day 32 子进程的开启 及其用法
  19. Cloud Native Weekly | Kubernetes 1.13发布
  20. gcc支持的一种结构体赋值方式

热门文章

  1. 原生Ajax代码实现
  2. 运维开发笔记整理-QueryDict对象
  3. Alpha版本第二周小结
  4. 开源框架---tensorflow c++ API 一个卡了很久的问题
  5. zstu月赛 招生
  6. 阿里 Linux服务器外网无法连接MySQL解决方法
  7. virtual box启动error
  8. 代码 | 自适应大邻域搜索系列之(5) - ALNS_Iteration_Status和ALNS_Parameters的代码解析
  9. LSTM-航班人数预测
  10. 使用Ajax和一般处理程序实现文件上传与下载