#include <stdio.h>
#include <stdlib.h>
typedef char DataType; /*设数据域类型为字符型*/
typedef struct node
{
DataType data;
struct node *lchild,*rchild,*mchild; /*左中右链域为指向结点结构的指针类型*/
}TNode; /*结点类型*/
typedef TNode *Tree; /*指向树结点的指针类型*/
/*以加入结点的左中右顺序序列输入,构造树*/
void CreateTree(Tree *T)
{
char ch;
scanf("\n%c",&ch);
if (ch=='0') *T=NULL; /*读入0时,将相应结点置空*/
else {
*T=(TNode*)malloc(sizeof(TNode)); /*生成结点空间*/
(*T)->data=ch;
CreateTree(&(*T)->lchild); /*构造二叉树的左子树*/
CreateTree(&(*T)->mchild); /*构造二叉树的中子树*/
CreateTree(&(*T)->rchild); /*构造二叉树的右子树*/
}
}
/*遍历树T中叶子结点*/
void Leaforder(Tree T)
{
if (T)
{
if (T->lchild==NULL && T->rchild==NULL&& T->mchild==NULL)
{
printf("%c",T->data); /*若为叶子,则输出*/
}
Leaforder(T->lchild); /*统计T的左子树*/
Leaforder(T->mchild); /*统计T的中子树*/
Leaforder(T->rchild); /*统计T的右子树*/
}
}
main()
{
Tree T;
printf("请按带空指针的树左中右顺序输入建立树存储的结点序列:\n");
printf("书本P40图3.1推导树的建立序列为S a 0 0 0 A S 0 a 0 0 0 0 b 0 0 0 A b 0 0 0 0 a 0 0 0 S 0 0 a 0 0 0\n");
CreateTree(&T);
Leaforder(T);
getch();
}
读取一个二叉树
然后输出 叶子节点,
数据结构我没学,c也只是看到了指针,不晓得怎么入手
应该怎么改,了解的朋友帮我改下,谢谢了