[Leetcode] Convert Sorted Array to Binary Search Tree

来源:互联网 发布:顾客特殊要求矩阵表 编辑:程序博客网 时间:2024/06/09 19:29

题目链接在此


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

基于一个有序数组,建立BST。

直观的做法:取数组中点作为根,左侧数组作为左子树,右侧数组作为右子树,不断递归地建树。


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 buildTree(nums, 0, nums.size() - 1);}private:TreeNode* buildTree(vector<int>& nums, int low, int high) {TreeNode* root = NULL;if (low <= high) {root = new TreeNode(nums[(low + high) / 2]);root->left = buildTree(nums, low, (low + high) / 2 - 1);root->right = buildTree(nums, (low + high) / 2 + 1, high);}return root;}};


0 0