問題: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 }