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*/
/*定义队头队尾指针*/
/*定义循环队列,存放结点指针*/
版权声明:本文标题:数据结构实验系统源代码(期末作业) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1714464009a681287.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论