typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
初始化
BiTree creatTree()
{
int value;
int temp;
BiTree T;
scanf("%d",&value);
temp = getchar();
if(value == -1)
{
return NULL;
}
else
{
BiTree T = (BiTNode*)malloc(sizeof(BiTNode));
T->data = value;
printf("请输入%d的左子树",value);
T->lchild = creatTree();
printf("请输入%d的右子树",value);
T->rchild = creatTree();
return T;
}
}
遍历
void PreOrder(BiTree T)
{
if(T!=NULL)
{
printf("%d\n",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOreder(BiTree T)
{
if(T!=NULL)
{
InOreder(T->lchild);
printf("%d\n",T->data);
InOreder(T->rchild);
}
}
void PostOrder(BiTree T)
{
if(T!=NULL)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%d\n",T->data);
}
}
void levelOrderTraversal(BiTree T)
{
if (T == NULL){
return;
}
Queue Q;
InitQueue(&Q);
EnQueue(&Q, T);
while (!IsEmpty(Q)) {
BiTree node = DeQueue(&Q);
printf("%d ", node->data);
if (node->lchild != NULL) {
EnQueue(&Q, node->lchild);
}
if (node->rchild != NULL) {
EnQueue(&Q, node->rchild);
}
}
}