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

来源:互联网 发布:知乎必须用手机注册吗 编辑:程序博客网 时间:2024/05/16 17:41

【题目】


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);    }};


0 0
原创粉丝点击