本文使用C语言编写了二叉树的基本实现代码。代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct node
{
char data;
struct node *lchild;
struct node *rchild;
};
typedef struct node Node;
typedef struct node *NodePtr;
int
Creat_Tree( NodePtr *T )
{
char ch;
scanf("%c", &ch);
if( ch == '#' )
*T = NULL;
else
{
*T = (NodePtr)malloc(sizeof(struct node));
if( *T == NULL)
return 0;
(*T)->data = ch;
Creat_Tree( &((*T)->lchild) );
Creat_Tree( &((*T)->rchild) );
}
return 1;
}
void
PreOrder( NodePtr T )
{
if( T != NULL )
{
printf("%c ", T->data);
PreOrder( T->lchild );
PreOrder( T->rchild );
}
}
void
InOrder( NodePtr T )
{
if( T != NULL )
{
InOrder( T->lchild );
printf( "%c ", T->data );
InOrder( T->rchild );
}
}
void
PostOrder( NodePtr T )
{
if( T != NULL )
{
PostOrder( T->lchild );
PostOrder( T->rchild );
printf( "%c ", T->data );
}
}
int main()
{
NodePtr T;
if( Creat_Tree( &T ) )
{
PreOrder(T);
printf("\n\n");
InOrder(T);
printf("\n\n");
PostOrder(T);
printf("\n\n");
}
return 0;
}
其中的关键是Creat_Tree(NodePtr *T) 中的参数,使用指向指针的指针。在输入的时候,如果有孩子为NULL指针,则使用"#"代替。