将一个数组变为高度平衡二叉树

和将链表变成高度平衡二叉树类似,只是查找中间节点的时候更方便一些。

/** * 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&num) {

       return toBST(num,0,num.size());

  }

  TreeNode *toBST(vector &num,int head,int end){

        if(head==end)return NULL;

        int mid=(head+end)/2;

        TreeNode *root=new TreeNode(num[mid]);

        root->left=toBST(num,head,mid);

        root->right=toBST(num,mid+1,end);

        return root;

    }

};

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容