Convert Sorted Array to Binary Search Tree
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.a
简单的深搜问题。
每次取mid=(start + end) / 2;
然后以num[mid]为root,深搜root->left, 和root->right。
复杂度o(n)
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode *sortedArrayToBST(vector<int> &num) { return DFS(num, 0, num.size()); } //[start, end) TreeNode *DFS(vector<int> &num, int start, int end){ int mid = (start + end) / 2; if(start >= end) return NULL; TreeNode * thisNode = new TreeNode(num[mid]); thisNode->left = DFS(num, start, mid); thisNode->right = DFS(num, mid + 1, end); return thisNode; } };