Convert Sorted List to Binary Search Tree

来源:互联网 发布:淘宝手机评价管理登录 编辑:程序博客网 时间:2024/06/07 19:56
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; *//** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode *sortedListToBST(ListNode *head)     {        if(!head)            return NULL;        ListNode* node=head;        int len=0;        while(node)        {            node=node->next;            ++len;        }                return Convert(head,0,len-1);    }        TreeNode* Convert(ListNode *&head,int start,int end)    {        if(start>end)            return NULL;        else        {            int mid=start+(end-start)/2;            TreeNode * leftChild=Convert(head,start,mid-1);            TreeNode* root=new TreeNode(head->val);            root->left=leftChild;            head=head->next;            root->right=Convert(head,mid+1,end);            return root;        }    }};

0 0
原创粉丝点击