LeetCode(109) Convert Sorted List to Binary Search Tree

来源:互联网 发布:js切换视频播放 编辑:程序博客网 时间:2024/05/21 18:05

将链表转换成数组,直接调用(LeetCode(108) Convert Sorted Array to Binary Search Tree)[http://blog.csdn.net/guanzhongshan/article/details/47320535]代码

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; *//** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* recursion(vector<int>& nums, int start, int end) {        if(end - start == 0) {            TreeNode *p1 = new TreeNode(nums[start]);            p1->left = NULL;            p1->right = NULL;            return p1;        }        if(end - start == 1) {            TreeNode *p1 = new TreeNode(nums[start]);            TreeNode *p2 = new TreeNode(nums[end]);            p1->left = NULL;            p1->right = NULL;            p2->left = p1;            p2->right = NULL;            return p2;        }        int mid = (start + end) / 2;        TreeNode *p1 = new TreeNode(nums[mid]);        p1->left = recursion(nums, start, mid - 1);        p1->right = recursion(nums, mid + 1, end);        return p1;    }    TreeNode* sortedArrayToBST(vector<int>& nums) {        if(nums.size() == 0)            return NULL;        return recursion(nums, 0, nums.size() - 1);    }    TreeNode* sortedListToBST(ListNode* head) {        vector<int> nums;        ListNode *p1 = head;        while(p1 != NULL) {            nums.push_back(p1->val);            p1 = p1->next;        }        return sortedArrayToBST(nums);    }};
0 0
原创粉丝点击