二叉树的遍历操作(C语言版)

#include<stdio.h> #include<malloc.h> typedef char Element; int count=1; struct Data{ Element data; Data *lchildren,*rchildren; }; Data *Root; void init(Data *&p){ p=(Data *)malloc(sizeof(Data)); char m; printf("读入第%d个元素 ",count); scanf("%c",&m); getchar(); count++; if(m!=#){ p->data=m; init(p->lchildren); init(p->rchildren); } else{ p=NULL; } } void preOrder(Data *p) { if(p){ printf("%c ",p->data); preOrder(p->lchildren); preOrder(p->rchildren); } } void backOrder(Data *p) { if(p!=NULL){ backOrder(p->lchildren); backOrder(p->rchildren); printf("%c ",p->data); } } void middleOrder(Data *p) {

if(p!=NULL){ middleOrder(p->lchildren); printf("%c ",p->data); middleOrder(p->rchildren); }

} int main() { printf("请你输入树中的元素按照先后顺序 "); printf("请输入元素,当输入#时,会停止读入 "); init(Root); printf("先序遍历的结果为: "); preOrder(Root); printf(" "); printf("后序遍历的结果为: "); backOrder(Root); printf(" "); printf("中序遍历的结果为: "); middleOrder(Root); return 0; }

经验分享 程序员 微信小程序 职场和发展