[leetcode] 109.Convert Sorted List to Binary Search Tree
2015-07-01 10:33
337 查看
题目:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
题意:
给定一个单链表,单链表的元素有序递增,转化为一颗高度平衡的二叉搜索树。
思路:
这道题只需要将这个单链表转化为一个数组,然后使用108题的代码即可。
代码如下:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
题意:
给定一个单链表,单链表的元素有序递增,转化为一颗高度平衡的二叉搜索树。
思路:
这道题只需要将这个单链表转化为一个数组,然后使用108题的代码即可。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* sortedListToBST(ListNode* head) { if(head == NULL)return NULL; vector<int> nums; while(head != NULL){ nums.push_back(head->val); head = head->next; } return buildBST(nums,0,nums.size() - 1); } TreeNode* buildBST(vector<int>& nums,int start,int end) { if(start > end)return NULL; int index = (start + end)/2; TreeNode* root = new TreeNode(nums[index]); root->left = buildBST(nums,start,index - 1); root->right = buildBST(nums,index + 1, end); return root; } };
相关文章推荐
- 16周作业
- web.input()与web.data()函数比较
- java线程的生命周期有哪些
- 系统服务(daemons)
- 如何注册Uber司机(全国版最新最详细注册流程)
- 实现ppt转pdf的方法
- wamp服务器访问php非常缓慢的解决过程
- 关于Linux下s、t、i、a权限
- Windows 8.1的更新缓存怎么清理?
- 51CTO博客&论坛-----“奔跑中的2015”主题征文(已结束)
- 分块法 hdu4858 项目管理
- QWidget: Must construct a QApplication before a QWidget
- java反射机制
- php面向对象中的魔术方法中文说明
- oc基础复习03-OC的类01
- 为 pycharm 修改 Theme & Color
- Raphael绘制圆圈环绕方法
- mysql取出两者不一致的数据
- 错误:the image set name is used by multiply image sets
- Destoon cms去掉简历模块系统默认字段必填的限制