TreeNode *sortedListToBST(ListNode *head) {
if(head == NULL) {
return NULL;
}
ListNode* virtual_head = new ListNode(-1);
virtual_head->next = head;
ListNode *pLast = virtual_head, *pSlow = head, *pFast = head;
while(pFast != NULL && pFast->next != NULL) {
pLast = pLast->next;
pSlow = pSlow->next;
pFast = pFast->next->next;
}
TreeNode* root = new TreeNode(pSlow->val);
ListNode* right_list = NULL;
right_list = pSlow->next;
pLast->next = NULL;
ListNode* left_list = virtual_head->next;
root->left = sortedListToBST(left_list);
root->right = sortedListToBST(right_list);
delete virtual_head;
return root;
}
[LeetCode] Convert Sorted List to Binary Search Tree
最新推荐文章于 2022-02-19 22:56:38 发布