Leetcode之Convert Sorted Array to Binary Search Tree

题目:

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

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
     / \
   -3   9
   /   /
 -10  5

代码:

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

想法:递归思想

猜你喜欢

转载自blog.csdn.net/qq_35455503/article/details/91312006