您的位置:首页 > 其它

LeetCode: Convert Sorted List to Binary Search Tree

2014-07-31 10:41 459 查看
思路:设计一个找到链表中位数位置的函数,然后以该位置为分界位置,左右递归求解,注意,找到中位数位置后,需要将左边链表与该位置断开,否则会出现死循环。

code:

class Solution {
public:
ListNode *findMidNode(ListNode *head){
ListNode * p = head, *q;
if(p->next == NULL) return p;
q = p;
while(q != NULL && q->next != NULL){
p = p->next;
q = q->next->next;
}
return p;
}
TreeNode *sortedListToBST(ListNode *head) {
if(head == NULL)return NULL;
ListNode *midNode = findMidNode(head);
TreeNode *tNode = new TreeNode(midNode->val);
ListNode *p = head;
while(p != midNode && p->next != midNode)
p = p->next;
p->next = NULL;
if(p != midNode)
tNode->left = sortedListToBST(head);
tNode->right = sortedListToBST(midNode->next);
return tNode;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: