109. Convert Sorted List to Binary Search Tree
来源:互联网 发布:全站仪数据采集 编辑:程序博客网 时间:2024/05/28 06:07
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
思路:一种解法用快慢指针找中点,然后分割成两段再递归调用。
http://www.cnblogs.com/grandyang/p/4295618.html
另一种解法把listnode转成数组,然后用数组构建BST就和前面一题一样了。
http://www.2cto.com/kf/201311/255348.html
第三种解法O(n)的时间复杂度,从最左下角的节点开始build tree,就是从ListNode的头节点往后扫描build,用中序遍历的过程来buidl这个tree。具体自己写一个例子跟一下可能理解的更多些。
class Solution {public: TreeNode* sortedListToBST(ListNode* head) { if(head == NULL) return NULL; int length = 0; ListNode *tmp = head; while(tmp!=NULL) { tmp = tmp->next; length++; } return buildBST(head,0,length-1); } TreeNode* buildBST(ListNode *&head, int low, int high) { if(low > high) return NULL; int mid = low + (high - low)/2; TreeNode *left = buildBST(head, low, mid-1); TreeNode *root = new TreeNode(head->val); head = head->next; root->left = left; TreeNode *right = buildBST(head,mid+1,high); root->right = right; return root; }};
0 0
- Tree-----109. Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- convert sorted list to binary search tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- 存储——硬盘结构
- 关于(i++)与(++i)在计算中的讨论
- [VS2010]_[Windows]_[Debug模式下LoadLibrary错误87]
- CF367 E - Working routine
- Android N/Android 7.0新特性(图文详解Android 7.0新功能)
- 109. Convert Sorted List to Binary Search Tree
- 一起talk C栗子吧(第一百八十二回:C语言实例--在printf函数中设置输出宽度一)
- Math的使用
- 关于BigDecimal
- Android N(Android 7.0)版本适配(开发者应该知道的一切新特性与新功能)
- 浙大PAT的大量感悟
- 境外诈骗,最新来自senegal的邮件诈骗
- 使用Ajax实现无刷新用户名验证和分页的效果(一)
- 《C++编程规范——101条规则、准则与最佳实践》笔记002