LeetCode:Convert Sorted List to Binary Search Tree

来源:互联网 发布:手机淘宝里怎么买东西 编辑:程序博客网 时间:2024/05/17 23:20

寻找中间位置作为根节点,把根节点前面部分最后一个节点的next置为NULL

class Solution {public:   TreeNode * sortList(ListNode *node)   {       if(node == NULL)       return NULL;       int len = 0;       ListNode* p = node;       while(p)       {           len++;           p= p->next;       }       ListNode* pre = NULL;       ListNode* after = node->next;       p = node;       int i=0;       while(i!=len/2)       {           pre = p;           p=p->next;           i++;       }       TreeNode * head = new TreeNode(p->val);       after= p->next;       if(pre!=NULL)//bug1 pre有可能为NULL 对于一个节点情况          pre->next = NULL;        if(p!=node)//bug2 p==node 对于一个节点情况 则left为空           head -> left = sortList(node);        else           head->left = NULL;       head -> right = sortList(after);       return head;   }    TreeNode *sortedListToBST(ListNode *head) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(head == NULL)           return NULL;        TreeNode* root;        root = sortList(head);    }};