Convert Sorted List to Binary Search Tree

Total Accepted: 12283 Total
Submissions: 45910My Submissions

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

总结:这个是网上找的,还不明确为什么是以下这个样子,去掉&,就出错

ListNode *&node
TreeNode *sortedListToBST(ListNode *head)
{
int len = 0;
ListNode * node = head;
while (node != NULL)
{
node = node->next;
len++;
}
return buildTree(head, 0, len-1);
} TreeNode *buildTree(ListNode *&node, int start, int end)
{
if (start > end) return NULL;
int mid = start + (end - start)/2;
TreeNode *left = buildTree(node, start, mid-1);
TreeNode *root = new TreeNode(node->val);
root->left = left;
node = node->next;
root->right = buildTree(node, mid+1, end);
return root;
}

总结:这个開始的时候有点问题,改动了一下

TreeNode *sortedListToBST(ListNode *head)
{
vector<TreeNode*> treeNodes;
if(head == NULL) return NULL;
while (head != NULL)
{
TreeNode *node = new TreeNode(head->val);
treeNodes.push_back(node);
head = head->next;
}
return genBST(0, treeNodes.size()-1, treeNodes);
} TreeNode* genBST(int start, int end, vector<TreeNode*> &treeNodes)
{
if (start == end) return treeNodes[start];
else if (start+1 == end)
{
treeNodes[start]->right = treeNodes[end];
return treeNodes[start];
} int mid = (start+end)/2;
TreeNode* root = treeNodes[mid];
root->left = genBST(start, mid-1, treeNodes);
root->right = genBST(mid+1, end, treeNodes);
return root;
}

总结:上面这个代码跟我參考得到的思想一致,可是我的是time limit

TreeNode *sortedListToBST(ListNode *head) {
int len = 0;
ListNode *node = head;
while(node)
{
len++;
node = node->next;
}
return BuildTree(head,1,len);
} TreeNode *BuildTree(ListNode *node,int start,int end)
{
if(start > end) return NULL;
int mid = start + (end-start)/2;
ListNode *mi_node = node;
for(int i=1;i<mid;i++)
{
mi_node = mi_node->next;
} TreeNode *root = new TreeNode(mi_node->val);
root->left = BuildTree(node,start,mid-1);
root->right = BuildTree(node,mid+1,end);
return root;
}

leetcode__Convert Sorted List to Binary Search Tree的更多相关文章

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

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

  2. [LeetCode] Convert Sorted List to Binary Search Tree 将有序链表转为二叉搜索树

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  3. [LeetCode] Convert Sorted Array to Binary Search Tree 将有序数组转为二叉搜索树

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 这道 ...

  4. leetcode -- Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  5. [Leetcode][JAVA] Convert Sorted Array to Binary Search Tree && Convert Sorted List to Binary Search Tree

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  6. 【leetcode】Convert Sorted List to Binary Search Tree

    Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted in as ...

  7. 【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 ...

  8. 【LeetCode OJ】Convert Sorted Array to Binary Search Tree

    Problem Link: http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ Same idea ...

  9. 34. Convert Sorted List to Binary Search Tree && Convert Sorted Array to Binary Search Tree

    Convert Sorted List to Binary Search Tree OJ: https://oj.leetcode.com/problems/convert-sorted-list-t ...

随机推荐

  1. Android中的pix,sp,dp相关概念

    px( pixel) 像素,可以简单的理解为一个点或方块,用以颜色的显示(单位),一般指印刷品或屏幕设置设备的颜色显示定义. dip(device independent pixels)设备独立像素. ...

  2. C# 中经常用到的HTTP请求类,已封装get,post,delete,put

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  3. EntityFramework动态组合多排序字段

    前言:在使用EF当中,肯定会遇到动态查询的需求,建立一个公共调用的动态组合表达式查询也是必不可少的,以下是建立动态组合多排序字段做个记录,供以后调用 1.建立一个结构,用于多个排序字段组合,这个结构体 ...

  4. USB C和USB 3.1傻傻分不清?这篇文章可以帮你

    USB Type-C接口以及USB 3.1标准的到来,理应为消费者提供更多便利.然而就目前来看,似乎这些新标准非但没有为消费者提供了更好的使用体验,反而带来了诸多隐患.Google的工程师Benson ...

  5. 2016 Web 开发资源工具大搜罗

    原文链接: 100+ Awesome Web Development Tools and Resources Web的迅猛发展对于开发者来说既是一件好事也是一件坏事.不断紧跟潮流学习新的技术.编程语言 ...

  6. Android用户界面UI组件--AdapterView及其子类(五) Spinner和SpinnerAdapter

    Spinner就是下拉框组件,可以自定义下拉布局样式,可以使用ArrayAdapter以及SpinnerAdapter适配 在Adapter中实现SpinnerAdapter,继承BaseAdapte ...

  7. ASP.NET MVC 增强Convert用法+【分页2】

    [分页2]    public dynamic PageQuery()        {              :  : ; i < data.Length; i++)            ...

  8. EditPlus+MinGW搭建简易的C/C++开发环境

    EditPlus+MinGW搭建简易的C/C++开发环境 有时候想用C编点小程序,但是每次都要启动那难用又难看的VC实在是不情愿,而且老是会生成很多没用的中间文件,很讨厌,后来看到网上有很多人用Edi ...

  9. 【Android 复习】:Android之ViewFlipper(一)

    屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面:一个个性化设置页面. 通过查看Android API文档可以发现, ...

  10. (转载)C++:STL标准入门汇总

    (转载)http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html 学无止境!!! 第一部分:(参考百度百科) 一.STL简介 S ...