输入AB#D##C##回车,或者按照规则自己去输入,
规则就是按前序遍历的方式输入,
#include<cstdio> #include<cstdlib> #include<cstring> typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void Init(BiTree *T){ if(!((*T)=(BiTree)malloc(sizeof(BiTNode)))) exit(0); *T = NULL; } void PreOrderTraverse(BiTree T){ //前序遍历算法 if(T == NULL) return; printf("%c\n",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BiTree T){ //中序遍历算法 if(T == NULL) return; InOrderTraverse(T->lchild); printf("%c\n",T->data); InOrderTraverse(T->rchild); } void PostOrderTraverse(BiTree T){ //后序遍历算法 if(T == NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c\n",T->data); } void CreateBiTree(BiTree *T){ //创建二叉树 AB#D##C##回车 char ch; scanf("%c",&ch); if(ch == ‘#‘) *T = NULL; else{ *T = (BiTree)malloc(sizeof(BiTNode)); if(!*T) exit(0); (*T)->data = ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } } int main(){ BiTree T; // Init(&T); CreateBiTree(&T); printf("前序遍历为:\n"); PreOrderTraverse(T); printf("中序遍历为:\n"); InOrderTraverse(T); printf("后序遍历为:\n"); PostOrderTraverse(T); return 0 ; }
时间: 2024-10-31 06:10:47