109. Convert Sorted List to Binary Search Tree

来源:互联网 发布:百度网盘提示网络异常 编辑:程序博客网 时间:2024/05/04 00:10

题目:

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

解法:

/** * 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* sortedListToBST(ListNode* head) {        if(!head) return NULL;        return help(head,NULL);    }    TreeNode* help(ListNode* head, ListNode* tail){        ListNode* fast = head, *slow = head;        if(head==tail) return NULL;//截止条件        while(fast != tail && fast->next != tail){// 注意体会            fast = fast->next->next;            slow = slow->next;        }        TreeNode* res = new TreeNode(slow->val);        res->left = help(head, slow);        res->right = help(slow->next, tail);        return res;    }    };


0 0
原创粉丝点击