109. Convert Sorted List to Binary Search Tree
2015-08-09 21:59
330 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST
分析:和上一题同理,只不过要使用快慢指针来找到链表的中间节点
分析:和上一题同理,只不过要使用快慢指针来找到链表的中间节点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode *sortedListToBST(ListNode *head) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(head == NULL)return NULL; ListNode *fast = head, *slow = head, *preSlow = NULL; while(fast->next && fast->next->next) { fast = fast->next->next; preSlow = slow; slow = slow->next; } TreeNode *res = new TreeNode(slow->val); fast = slow->next; delete slow; if(preSlow != NULL) { preSlow->next = NULL; res->left = sortedListToBST(head); } res->right = sortedListToBST(fast); return res; } };
相关文章推荐
- 【数位DP】Codeforces Gym 100418J Lucky tickets
- Objective-C—— @Property详解
- Spring 数据源配置三:多数据源
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理+中国剩余定理)
- [转载]i386/i686/x86/x86_64关系与区别
- Linux下阅读源码工具
- css3状态选择性伪类
- Android图片轮播组件
- 父母之间——我的独立
- 创建一个动态链接库 (DLL),使用VS2010
- 计蒜客 难题题库 023 计数和数数
- 【HDU2089】【不要62】
- 反射、注解、线程
- Android中颜色设置的三种方法
- 设计模式 经典书籍必备推荐
- Spring【AOP】
- HTML特殊符号对照表
- iOS学习资源汇总
- Leetcode54 Spiral Matrix
- SCVMM中“云”属性的备份和恢复