给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
struct Node
{
int value;
Node *left;
Node *right;
};
void createTree(int a[], int begin, int end, Node* &root, Node *parent, bool leftChild)
{
if (begin > end)
{
return;
}
int mid = begin + (end-begin)/2;
Node *p = new Node();
p->value = a[mid];
if (root == NULL)
{
root = p;
}
else
{
if (leftChild)
{
parent->left = p;
}
else
{
parent->right = p;
}
}
if (begin > mid-1)
{
p->left = NULL;
}
else
{
createTree(a, begin, mid-1, root, p, true);
}
if (mid+1 > end)
{
p->right = NULL;
}
else
{
createTree(a, mid+1, end, root, p, false);
}
}