#include<stdio.h>
#include<stdlib.h>
typedef struct treenode{
char ch;
struct treenode* lc,*rc;
}treenode,*treelink;
//创建以treelink为根节点的数
treelink createtree(treelink);
void preorder(treelink); //先序
void medorder(treelink); //中序
void postorder(treelink);//后序
treelink createtree(treelink t)
{
char c;
scanf("%c",&c);
getchar();
if(c == '#')
{
t = NULL;
}
else
{
t = (treelink)malloc(sizeof(struct treenode));
t->ch = c;
t->lc = createtree(t->lc); //建立以t为根节点的左子树并用指针指向它
t->rc = createtree(t->rc);
}
return t;
}
//前序遍历
void preorder(treelink t)
{
if(!t)return;
printf("%c\t",t->ch);
preorder(t->lc);
preorder(t->rc);
}
//中序遍历
void medorder(treelink t)
{
if(!t)return;
medorder(t->lc);
printf("%c\t",t->ch);
medorder(t->rc);
}
//后序遍历
void postorder(treelink t)
{
if(!t)return;
postorder(t->lc);
postorder(t->rc);
printf("%c\t",t->ch);
}
int main()
{
treelink t = NULL;
t = createtree(t);
printf("preorder:\n");
preorder(t);
printf("\n");
printf("medorder:\n");
medorder(t);
printf("\n");
printf("postorder:\n");
postorder(t);
return 0;
}
二叉树的遍历
最新推荐文章于 2025-05-23 08:55:07 发布