您的位置:首页 > 其它

LeetCode: Convert Sorted Array to Binary Search Tree [108]

2014-06-04 08:00 609 查看

【题目】

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













【题意】

给定一个已排序的数组(不存在重复元素),将它转换成一棵平衡二叉搜索树。

【思路】

由于平衡二叉树要求左右子树的高度差绝对值相遇等于1,也就是说左右子树尽可能包含相同数目节点。

则使用二分法来解本题即可。

【代码】

/**
* 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 *build(vector<int>&num, int low, int high){
if(low>high)return NULL;

int mid = (low+high)/2;
//生成根节点
TreeNode*root=(TreeNode*)malloc(sizeof(TreeNode));
root->val=num[mid];
//生成左子树
TreeNode*left=build(num, low, mid-1);
//生成右子树
TreeNode*right=build(num, mid+1, high);
//构造二叉树
root->left=left;
root->right=right;
return root;
}

TreeNode *sortedArrayToBST(vector<int> &num) {
int size=num.size();
if(size==0)return NULL;

return build(num, 0, size-1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: