您的位置:首页 > 其它

Convert Sorted List to Binary Search Tree [LeetCode]

2013-11-29 07:41 441 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

Solution:

TreeNode *sortedListToBST(ListNode *head) {
if(head == NULL)
return NULL;
if(head->next == NULL)
return new TreeNode(head->val);

ListNode * current = head;
int size = 0;
while(current != NULL){
size ++;
current = current->next;
}
current = head;
int median = size / 2;
int count = 0;
ListNode * median_node = NULL;
ListNode * pre_node = NULL;
while(current != NULL){
if(count == median){
median_node = current;
pre_node->next = NULL;
break;
}
count ++;
pre_node = current;
current = current->next;
}
TreeNode * root = new TreeNode(median_node->val);
root->left = sortedListToBST(head);
root->right = sortedListToBST(median_node->next);
return root;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: