//遍历二叉树 #include#include #define TElemType int #define MAXSIZE 9999 typedef struct BiNode { TElemType data; struct BiNode* lchild, * rchild; }BiTNode,*BiTree; BiNode* CreatBiT() { TElemType ch; BiTree T; ch = getchar(); if (ch == '#') { return NULL; } if (!(T = (BiNode*)malloc(sizeof(BiNode))))return NULL; T->data = ch; T->lchild = CreatBiT(); T->rchild = CreatBiT(); return T; } void PreOrderBiT(BiNode* T) { if (!T)return; printf("%c", T->data); PreOrderBiT(T->lchild); PreOrderBiT(T->rchild); } void InOrderBiT(BiNode* T) { if (!T)return; InOrderBiT(T->lchild); printf("%c", T->data); InOrderBiT(T->rchild); } void PostOrderBiT(BiNode* T) { if (!T)return; PostOrderBiT(T->lchild); PostOrderBiT(T->rchild); printf("%c", T->data); } typedef struct Queue { int front; int rear; BiNode* data[MAXSIZE]; }SqQueue; void LeverBiTree(BiNode* T) { BiNode* q=NULL; Queue* Q; if (!(Q = (Queue*)malloc(sizeof(Queue))))return; Q->front = Q->rear = -1; if (T == NULL)return; Q->data[++Q->rear] = T; while (Q->front != Q->rear) { q = Q->data[++Q->front]; printf("%c", q->data); if (q->lchild != NULL)Q->data[++Q->rear] = q->lchild; if (q->rchild != NULL)Q->data[++Q->rear] = q->rchild; } } int main() { BiNode* T; T=CreatBiT(); PreOrderBiT(T); printf("n"); InOrderBiT(T); printf("n"); PostOrderBiT(T); printf("n"); LeverBiTree(T); printf("n"); return 0; }



