读书人

二叉树的建立?该如何解决

发布时间: 2013-03-22 09:49:50 作者: rapoo

二叉树的建立?
用C语言实现以中序和后序访问的序列建立二叉树?

谢谢
[解决办法]


void Visit(DataType item)
{
printf("%c",item);
}


/*中序遍历*/
void InOrder(BiTreeNode *t, void Visit(DataType item))
{
if (t != NULL)
{

PreOrder(t->left,Visit);
Visit(t->data);
PreOrder(t->right,Visit);
}
}

/*后序遍历*/
void PostOrder(BiTreeNode *t, void Visit(DataType item))
{
if (t != NULL)
{

PreOrder(t->left,Visit);
PreOrder(t->right,Visit);
Visit(t->data);
}
}

[解决办法]

typedef struct BiTNode
{
int data;
BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

int BST_Insert(BiTree *T, int k)
{
if(*T == NULL)
{
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = k;
(*T)->lchild = (*T)->rchild = NULL;
return 1;
}
else if(k == (*T)->data)
return 0;
else if(k < (*T)->data)
return BST_Insert(&((*T)->lchild), k);
else
return BST_Insert(&((*T)->rchild), k);
}

void Create_BST(BiTree *T, int arr[], int n)
{
int i = 0;
while(i < n)
{
BST_Insert(T, arr[i]);
i++;
}
}

void MidOrder(BiTree T)
{
if(T != NULL)
{
MidOrder(T->lchild);
printf("%d ", T->data);
MidOrder(T->rchild);
}
}

读书人网 >C语言

热点推荐