您的位置:首页 > 其它

Convert Sorted List to Binary Search Tree

2013-07-01 23:19 162 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

class Solution {
public:
void f(vector<int> & v, int start, int end, TreeNode *&root){
if (start > end){
return;
}
int m = start + (end - start)/2;
if (!root){
root = new TreeNode(v[m]);
f(v,start,m-1,root->left);
f(v,m+1,end,root->right);
}
}
TreeNode *sortedListToBST(ListNode *head) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (!head){
return NULL;
}
vector<int> v;
for(ListNode *p = head; p; p = p->next){
v.push_back(p->val);
}
TreeNode * root = NULL;
f(v,0,v.size() -1, root);
return root;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: