通过二叉树的前序遍历对二叉树进行创建和读取:
#include<stdio.h>
#include<stdlib.h>
typedef struct TNode//创建二叉树结点
{
char data;
struct TNode *lchild, *rchild;
}TNode, *TreeTre;
CreateTree(TreeTre *l)//用前序遍历创建一个二叉树
{
char c;
scanf("%c",&c);
if(c == ' ') //如果输入的是空格,停止向下进行遍历输入
*l = NULL;
else{
*l = (TNode *)malloc(sizeof(TNode));
(*l)->data = c;
CreateTree(&(*l)->lchild);
CreateTree(&(*l)->rchild);
}
}
PTree(char c, int ans)
{
printf("%c 在第%d行\n",c,ans);
}
ReadTree(TreeTre l, int ans)//遍历二叉树,ans记录层数
{
if(l)
{
PTree(l->data, ans);
ReadTree(l->lchild, ans+1);//遍历左孩子
ReadTree(l->rchild, ans+1);//遍历右孩子
}
}
int main()
{
TreeTre l = NULL;
int ans = 1;
CreateTree(&l);
printf("请使用前序遍历输入二叉树:"\n);
ReadTree(l,ans);
return 0;
}