二叉树遍历

来源:互联网 发布:起名软件排名 编辑:程序博客网 时间:2024/06/01 09:49

 

#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();} 

 

原创粉丝点击