二叉树的创建和遍历
#include<stdio.h>#include<stdlib.h>typedefstructTree{chardata;structTree*lchild;structTree*rchild;}BTree;voidcreateTree(BTree**t){charc;scanf("%c",&c);if(c=='')*t=NULL;elseif(c!='\0'&&c!='\x0a'){if(!(*t=(BTree*)malloc(sizeof(BTree))))exit(0);(*t)->data=c;createTree(&((*t)->lchild));createTree(&((*t)->rchild));}}//先序遍历voidpreorderTraverse(BTree*t){if(t!=NULL){printf("%c",t->data);if(t->lchild!=NULL)preorderTraverse(t->lchild);elseprintf("*");if(t->rchild!=NULL)preorderTraverse(t->rchild);elseprintf("*");}elseprintf("Thiatreeisnull\n");}//中序遍历voidinorderTraverse(BTree*t){if(t!=NULL){if(t->lchild!=NULL)inorderTraverse(t->lchild);elseprintf("*");printf("%c",t->data);if(t->rchild!=NULL)inorderTraverse(t->rchild);elseprintf("*");}elseprintf("Thiatreeisnull\n");}//后序遍历voidpostorderTraverse(BTree*t){if(t!=NULL){if(t->lchild!=NULL)postorderTraverse(t->lchild);elseprintf("*");if(t->rchild!=NULL)postorderTraverse(t->rchild);elseprintf("*");printf("%c",t->data);}elseprintf("Thiatreeisnull\n");}intmain(){BTree*t=NULL;createTree(&t);printf("starttreverse\n");preorderTraverse(t);printf("\n");inorderTraverse(t);printf("\n");postorderTraverse(t);printf("\n");return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。