109.Convert Sorted List to Binary Search Tree

问题:spa

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

思路:先遍历一遍链表,将值存入一个vector中,再讲vector中有序数据构建平衡二叉搜索树。blog

代码:element

 1 TreeNode* sortedListToBST(ListNode* head)
 2 {
 3     vector<int> nums;
 4     while(head!=NULL)
 5     {
 6         nums.push_back(head->val);
 7         head=head->next;
 8     }
 9     return solve(nums,0,nums.size()-1);
10 }
11 
12 TreeNode* solve(vector<int>& nums,int low,int high)
13 {
14     if (low>high)
15         return NULL;
16     int mid=(low+high)/2;
17     TreeNode* root=new TreeNode(nums[mid]);
18 
19     root->left=solve(nums,low,mid-1);
20     root->right=solve(nums,mid+1,high);
21 
22     return root;
23 }
相关文章
相关标签/搜索