您的位置:首页 > 其它

Convert Sorted List to Binary Search Tree

2013-11-08 19:35 197 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

思路:
递归

代码:

TreeNode *sortedListToBST(ListNode *head, int len){
if(len == 0){
return NULL;
}
TreeNode *result = new TreeNode(0);
if(len == 1){
result->val = head->val;
return result;
}
ListNode *listNode = head;
for(int i = 0; i < len/2; i++)
listNode = listNode->next;
result->val = listNode->val;
result->left = sortedListToBST(head, len/2);
result->right = sortedListToBST(listNode->next, (len-1)/2);
return result;
}
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 *listNode = head;
int len = 0;
while(listNode){
len++;
listNode = listNode->next;
}
return sortedListToBST(head, len);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: