#include <stdlib.h> #include <stdio.h> #include <string.h> //二叉链表示法 typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void preOrder(BiTNode *root)//先序遍历(先遍历根然后遍历左子树最后遍历右子树) { if(root==NULL) { return ; } printf("%c ",root->data); preOrder(root->lchild);//遍历左子树 preOrder(root->rchild);//遍历右子树 } void inOrder(BiTNode *root)//中序遍历(先遍历左子树然后遍历根最后遍历右子树) { if(root==NULL) { return ; } inOrder(root->lchild);//遍历左子树 printf("%c ",root->data); inOrder(root->rchild);//遍历右子树 } void postOrder(BiTNode *root)//后序遍历(先遍历左子树然后遍历右子树最后遍历根) { if(root==NULL) { return ; } postOrder(root->lchild);//遍历左子树 postOrder(root->rchild);//遍历右子树 printf("%c ",root->data); } void main() { //创建树的节点 BiTNode a={'A',NULL,NULL}; BiTNode b={'B',NULL,NULL}; BiTNode c={'C',NULL,NULL}; BiTNode d={'D',NULL,NULL}; BiTNode e={'E',NULL,NULL}; BiTNode f={'F',NULL,NULL}; BiTNode g={'G',NULL,NULL}; BiTNode h={'H',NULL,NULL}; BiTNode i={'I',NULL,NULL}; //建立关系 a.lchild=&b; a.rchild=&e; b.rchild=&c; c.lchild=&d; e.rchild=&f; f.lchild=&g; g.lchild=&h; g.rchild=&i; //树的遍历 printf("先序遍历:"); preOrder(&a); printf(" "); printf("中序遍历:"); inOrder(&a); printf(" "); printf("后序遍历:"); postOrder(&a); printf(" "); system("pause"); }