#include<stdio.h> #include<stdlib.h> typedef struct BiT{ char data; struct BiT *lchild; struct BiT *rchild; }BiT; BiT* CreateBiTree(BiT *T) { //构造二叉链表表示的二叉树T char ch; scanf("%c",&ch); if (ch=='#') T = NULL; else { T = (BiT *)malloc(sizeof(BiT)); T->data = ch; T->lchild=CreateBiTree(T->lchild); T->rchild=CreateBiTree(T->rchild); } return T; } void PreOrderTraverse(BiT *T) { // 先序遍历二叉树T if (T) { printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } void InOrderTraverse(BiT *T) { // 中序遍历二叉树T if (T) { InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } } void PostOrderTraverse(BiT *T) { // 后序遍历二叉树T if (T) { PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c",T->data); } } void main() { printf("先序建树:"); BiT *T=CreateBiTree(T); printf("/n先序遍历:"); PreOrderTraverse(T); printf("/n中序遍历:"); InOrderTraverse(T); printf("/n后序遍历:"); PostOrderTraverse(T); getchar();getchar(); }