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 }
相關文章
相關標籤/搜索