您的位置:首页 > 其它

109. Convert Sorted List to Binary Search Tree

2016-05-15 12:35 232 查看
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

题目是将一个有序链表转为平衡二叉树。

class Solution {
public:
ListNode *findmid(ListNode *head){//快慢指针求中间结点,但返回的是中间结点的前一个
ListNode *s=head;
ListNode *f=head->next->next;
while(s!=NULL&&f!=NULL&&f->next!=NULL){
s=s->next;
f=f->next->next;
}
return s;
}

TreeNode* sortedListToBST(ListNode* head) {
if(head==NULL)return NULL;
else if(head->next==NULL)return new TreeNode(head->val);
ListNode *mid=findmid(head);
TreeNode *root=new TreeNode(mid->next->val);
root->right = sortedListToBST(mid->next->next);
mid->next=NULL;//把前半部分的链表末尾置为NULL
root->left=sortedListToBST(head);
return root;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: