您的位置:首页 > 其它

Q4.3

2014-03-12 11:09 232 查看
#include <iostream>
using namespace std;

typedef struct Node
{
int data;
struct Node* lchild;
struct Node* rchild;
}Node, *pNode;

bool used[100];

void minHeightTree(pNode head, int* src, int start, int end)
{
if (start == end)
{
return;
}
int mid = (start + end) / 2;
pNode p = new Node;
if (used[mid] && mid < end && used[mid+1] < end)
{
mid++;
}
if (used[mid])
{
return;
}
p->data = src[mid];
p->lchild = p->rchild = NULL;
used[mid] = true;
if (!head->lchild && p->data < head->data)
{
head->lchild = p;
}
else if(!head->rchild && p->data > head->data)
{
head->rchild = p;
}
minHeightTree(p, src, start, mid);
minHeightTree(p, src, mid, end);
}

void printTree(pNode head)
{
if (!head)
{
return;
}
cout<<head->data<<endl;
if (head->lchild)
{
cout<<head->data<<"lchild:";
printTree(head->lchild);
}
if (head->rchild)
{
cout<<head->data<<"rchild:";
printTree(head->rchild);
}
}

int main(void)
{
int src[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int len = sizeof(src) / sizeof(int);
pNode head = new Node;
head->lchild = head->rchild = NULL;
memset(used, false, sizeof(used));
minHeightTree(head, src, 0, len - 1);
printTree(head);

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