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;
}
};

leetcode 108. Convert Sorted Array to Binary Search Tree 、109. Convert Sorted List to Binary Search Tree的更多相关文章

  1. Lowest Common Ancestor of a Binary Search Tree、Lowest Common Ancestor of a Binary Search Tree

    1.Lowest Common Ancestor of a Binary Search Tree Total Accepted: 42225 Total Submissions: 111243 Dif ...

  2. Leetcode: Convert sorted list to binary search tree (No. 109)

    Sept. 22, 2015 学一道算法题, 经常回顾一下. 第二次重温, 决定增加一些图片, 帮助自己记忆. 在网上找他人的资料, 不如自己动手. 把从底向上树的算法搞通俗一些. 先做一个例子: 9 ...

  3. 【LeetCode】81. Search in Rotated Sorted Array II (2 solutions)

    Search in Rotated Sorted Array II Follow up for "Search in Rotated Sorted Array":What if d ...

  4. Java for LeetCode 081 Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  5. 62. Search in Rotated Sorted Array【medium】

    62. Search in Rotated Sorted Array[medium] Suppose a sorted array is rotated at some pivot unknown t ...

  6. LeetCode 108. 将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree) 14

    108. 将有序数组转换为二叉搜索树 108. Convert Sorted Array to Binary Search Tree 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索 ...

  7. 37. leetcode 108. Convert Sorted Array to Binary Search Tree

    108. Convert Sorted Array to Binary Search Tree 思路:利用一个有序数组构建一个平衡二叉排序树.直接递归构建,取中间的元素为根节点,然后分别构建左子树和右 ...

  8. 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. 题目 ...

  9. [LeetCode] 108. Convert Sorted Array to Binary Search Tree ☆(升序数组转换成一个平衡二叉树)

    108. Convert Sorted Array to Binary Search Tree 描述 Given an array where elements are sorted in ascen ...

随机推荐

  1. 手写代码之写斐波那契数列-传入key值求对应的value

    public class Testany { public static void main(String[] args) { int value = number(10); System.out.p ...

  2. Linux 中常见的填空题

    一.填空题: 1. 在Linux系统中,以文件方式访问设备 . 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用i节点来标识. 4. ...

  3. java中的深拷贝与浅拷贝

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  4. $("xxx"); 使用jQuery获得对象

    $("xxx"); 使用jQuery获得对象 console.log( $ ( $ ( $ ( '.dropdown' ) ) ) );  与下面返回的结果都是一毛一样的. con ...

  5. java后台防止XSS的脚本攻击

    import java.util.regex.Pattern; //具体过滤关键字符public class XSSUtil { private static Pattern[] patterns = ...

  6. Spring的注解@Qualifier用法

    Spring的注解@Qualifier用法在Controller中需要注入service那么我的这个server有两个实现类如何区分开这两个impl呢?根据注入资源的注解不同实现的方式有一点小小的区别 ...

  7. Greenplum 如何直连segment节点

    Greenplum   展开阅读全文 直连greenplum segment节点的方法, utility模式 : 使用这种方式,不与其他节点通讯,只操作当前节点.也没有数据分布的概念. 如果使用uti ...

  8. PostgreSQL 数据目录结构

    根目录介绍 data ├── base # use to store database file(SELECT oid, datname FROM pg_database;) ├── global # ...

  9. Linux core dump 诊断进程奔溃退出

           最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何.       如果系统开启了core ...

  10. Codevs 4927 线段树练习5(分块)

    4927 线段树练习5 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有n个数和5种操作 add a b c:把区间[a,b]内的 ...