class Solution {
public:
TreeNode* __changeintoBST (ListNode*&head, int l, int r)
{
if (l>r) return NULL;
int mid = (r-l)/2+l;
TreeNode* templeft= __changeintoBST (head, l, mid-1);
TreeNode* root = new TreeNode(head->val);
head = head->next;
root->left = templeft;
root->right = __changeintoBST (head, mid+1, r);
return root;
}
TreeNode* sortedListToBST(ListNode* head) {
if (head==NULL) return NULL;
int len = 0;
ListNode *temp = head;
while (temp!=NULL) {
len++;
temp = temp->next;
}
return __changeintoBST( head, 0, len-1 );
}
};题号是leetcode 109 老师为什么第一个函数递归的时候非要写成*&head啊,*head就会一直错,这和引用有关吗?我觉得没引用也对啊,毕竟我是通过head=head->next做的?希望老师解答