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

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

/** * 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;

    }

};

你可能感兴趣的:(将一个数组变为高度平衡二叉树)