[LeetCode]Convert Sorted Array to Binary Search Tree

来源:互联网 发布:阳江市阳东区网络问政 编辑:程序博客网 时间:2024/06/04 00:30

题目:


Convert Sorted Array to Binary Search Tree

 

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

来源:https://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/



思路:

将排序数组转换成二叉平衡树。

设数组的下标范围为[left, right],它的中间元素的下标为middle = (left + right) / 2;
middle 将数组分为[left, middle - 1]和[middle + 1, right];
middle作为一个相对根节点,它的左右子子树分别为[left, middle - 1]和[middle + 1, right]的所有元素,依次递归


C++ AC代码:

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

运行时间 92ms

0 0
原创粉丝点击