1. 程式人生 > >LeetCode --- 108. Convert Sorted Array to Binary Search Tree

LeetCode --- 108. Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

這道題的要求是將有序陣列轉化成高度平衡的二叉搜尋樹(BST)。

由於陣列有序,因此相當於二叉搜尋樹的前序遍歷。又由於要求二叉搜尋樹高度平衡,即左右子樹高度相差小於等於1,所以取陣列中間的數作為根節點,左邊作為左子樹,右邊作為右子樹,這樣就可以構造出高度平衡的二叉搜尋樹了。

時間複雜度:O(n)

空間複雜度:O(n)

 1 class Solution 
 2 {
 3 public:
 4     TreeNode
*sortedArrayToBST(vector<int> &num) 5 { 6 return sortedArrayToBST(num, 0, num.size() - 1); 7 } 8 private: 9 TreeNode *sortedArrayToBST(vector<int> &num, int l, int r) 10 { 11 if(l > r) 12 return NULL; 13 14 int m
= (l + r) / 2; 15 TreeNode *root = new TreeNode(num[m]); 16 root -> left = sortedArrayToBST(num, l, m - 1); 17 root -> right = sortedArrayToBST(num, m + 1, r); 18 return root; 19 } 20 };