实验目的 编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历。 实验内容 编程序并上机调试运行。 编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历。 编写程序 /***********二叉树的遍历**************/ #include #include typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; /*************************************************/ //按先序次序构建的二叉树链表 void CreatBiTree(BiTree *T) { char ch; if((ch=getchar())==' ') *T=NULL; else { *T=(BiTNode*)malloc(sizeof(BiTNode)); if(!(*T)) exit(1); (*T)->data=ch; CreatBiTree(&(*T)->lchild); CreatBiTree(&(*T)->rchild); } } /*************************************************/ //先序遍历--递归算法 void PreOrderTraverse(BiTree T) { if(T) { printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } /*************************************************/ //中序遍历--递归算法 void InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } } /*************************************************/ //后序遍历--递归算法 void PostOrderTraverse(BiTree T) { if(T) { PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c",T->data); } } /*************************************************/ //main 函数 void main() { BiTree T; printf("请按先序次序输入二叉树中结点的值,空格字符表示空树:\n" ); CreatBiTree(&T); printf("\n"); printf("先序遍历为:\n"); PreOrderTraverse(T); printf("\n\n"); printf("中序遍历为:\n"); InOrderTraverse(T); printf("\n\n"); printf("后序遍历为:\n"); PostOrderTraverse(T); printf("\n\n"); getchar(); } 运行程序: 结果分析: 按先序输入的二叉树为 ABC^^DE^G^^F^^^(^为空格) 该二叉树画成树形为: 其先序遍历为:ABCDEG F 其中序遍历为:CBEG DFA 其后序遍历为:CG EFDBA 可以看出运行结果是正确的。 程序解析: 1.首先是将程序的开头写好,因为后面要用到 malloc,所以要有 stdlib.h 的声明。然后建...