二叉树的创建与遍历
来源:互联网 发布:开淘宝店教学视频教程 编辑:程序博客网 时间:2024/05/17 16:00
#include<stdio.h>#include<malloc.h>typedef struct BitNode{ char data; struct BitNode *lchild; //左孩子 struct BitNode *rchild; //右孩子}BitTree;/*****创建二叉树 ******/BitTree * CreateBitTree() { BitTree *T=0; char ch; scanf("%c",&ch); fflush(stdin); if('#'==ch) { T=NULL; return 0; } else { T=(BitTree *)malloc(sizeof(BitTree)); T->data=ch; T->lchild=CreateBitTree(); T->rchild=CreateBitTree(); } return T;}/*************先序遍历***************************/int PreOrderTraverse(BitTree *T){ if(T!=NULL) { printf("%c ",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } return 0;}/*************中序遍历************************/int InOrderTraverse(BitTree *T){ if(T!=NULL) { InOrderTraverse(T->lchild); printf("%c ",T->data); InOrderTraverse(T->rchild); } return 0;}/**************后序遍历********************/int PostOrderTraverse(BitTree *T){ if(T!=NULL) { PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c ",T->data); } return 1;}int main(){ BitTree *p=0; printf("请输入字符,以'#'结束"); p=CreateBitTree(); PostOrderTraverse(p); return 0;}