admin 管理员组

文章数量: 1086019


2024年4月30日发(作者:lightbox使用视频)

/*树子系统*/

#include

#include

#define MAX 100

int count=0; /*定义计算结点个数的变量*/

typedef struct tnode

{

char data;

struct tnode *lchild,*rchild;

}BT;

BT *CreateBTree()

{

BT *t;

char ch;

scanf("%c",&ch);

getchar();

if(ch=='0')

t=NULL;

else

{

t=(BT *)malloc(sizeof(BT));

t->data=ch;

printf("请输入%c结点的左孩子结点:",t->data);

t->lchild=CreateBTree();

printf("请输入%c结点的右孩子结点:",t->data);

t->rchild=CreateBTree();

}

return t;

}

void ShowBTree(BT *T) /*用广义表表示法显示二叉树*/

{ if (T!=NULL) /*当二叉树非空时*/

{ printf("%c",T->data); /*输入该结点数据域*/

if(T->lchild!=NULL) /*若其左子树非空*/

{ printf("("); /*输入左括号*/

ShowBTree(T->lchild); /*递归调用该函数输出其左子树各结点*/

if(T->rchild!=NULL) /*若其右子树非空*/

{ printf(","); /*输出逗号*/

ShowBTree(T->rchild); /*递归调用该函数输出其右子树各结点*/

}

printf(")");

}

else

if(T->rchild!=NULL) /*二叉树左子树为空,右子树不为空时*/

{

printf("("); /*输入左括号*/

ShowBTree(T->lchild); /*递归调用该函数输出其左子树各结点*/

if(T->rchild!=NULL) /*若其右子树非空*/

{ printf(","); /*输出逗号*/

ShowBTree(T->rchild); /*递归调用该函数输出其右子树各结点*/

}

printf(")");

}

}

}

void PreOrder(BT *T)

{ if(T==NULL) return;

else

{ printf("%c",T->data);

PreOrder(T->lchild);

PreOrder(T->rchild);

}

}

void InOrder(BT *T)

{ if(T==NULL) return;

else

{ InOrder(T->lchild);

printf("%c",T->data);

InOrder(T->rchild);

}

}

void PostOrder(BT *T)

{ if (T==NULL) return;

else

{ PostOrder(T->lchild);

PostOrder(T->rchild);

printf("%c",T->data);

}

}

void LevelOrder(BT *T)

{ int f,r;

BT *p,*q[MAX];

p=T;

/* 先序遍历二叉树T*/

/* 递归调用的结束条件*/

/* 输出结点的数据域*/

/* 先序递归遍历左子树*/

/* 先序递归遍历右子树*/

/* 中序遍历二叉树T*/

/* 递归调用的结束条件*/

/* 中序递归遍历左子树*/

/* 输出结点的数据域*/

/* 中序递归遍历右子树*/

/* 后序遍历二叉树T*/

/* 递归调用的结束条件*/

/* 后序递归遍历左子树*/

/* 后序递归遍历右子树*/

/* 输出结点的数据域*/

/*按层次遍历二叉树T*/

/*定义队头队尾指针*/

/*定义循环队列,存放结点指针*/


本文标签: 结点 递归 遍历 输出 调用