将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* sortedArrayToBST(vector<int>& nums) { return BST(nums,0,nums.size()-1); } TreeNode* BST(vector<int>& nums,int start,int end){ if(start > end) return nullptr; int mid = (start + end) / 2; int flag = nums[mid]; TreeNode *tmp = new TreeNode(flag); tmp->left = BST(nums,start,mid - 1); tmp->right = BST(nums,mid + 1,end); return tmp; } };通过时间:
