LeetCode --- 108. Convert Sorted Array to Binary Search Tree
阿新 • • 發佈:2019-02-18
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 };