摘要 大家好,飞飞今天来为大家解答以下的问题,关于c语言二叉树三种遍历,二叉树的遍历算法c语言这个很多人还不知道,那么下面让我带着大家一起来...
大家好,飞飞今天来为大家解答以下的问题,关于c语言二叉树三种遍历,二叉树的遍历算法c语言这个很多人还不知道,那么下面让我带着大家一起来看看吧!
1、#include #include typedef struct node{ int data; struct node *lchild,*rchild; }*treetp,tree; treetp create (treetp t,int c); void print1(treetp); void print2(treetp);void print3(treetp);int number=0;void main() { treetp t=0,r; r=create (t,0); printf("前序排列 :"); print1 (r); printf("中序排列 :"); print2 (r); printf("后序排列 :"); print3 (r);} treetp create(treetp t,int c) { treetp p,di; do{ scanf("%d",&c); if (t==0) { t=(treetp)malloc(sizeof(tree)); t->lchild=t->rchild=0; t->data=c; } else { p=t; while(p!=0) { di=p; if(c<(p->data)) p=p->lchild; else p=p->rchild; } if(c<(di->data)) { treetp NEWdi=(treetp) malloc(sizeof(tree)); NEWdi->lchild=NEWdi->rchild=0; NEWdi->data=c; di->lchild=NEWdi; } else { treetp NEWdi=(treetp) malloc(sizeof(tree)); NEWdi->lchild=NEWdi->rchild=0; NEWdi->data=c; di->rchild=NEWdi; } } ++number;}while(c!=0); printf("叶子的数量:%d",number);return t;} void print1(treetp t) { if (t!=0) { printf("%d ",t->data); print1(t->lchild); print1(t->rchild); } } void print2(treetp t) { if (t!=0) { print2(t->lchild); printf("%d ",t->data); print2(t->rchild); } } void print3(treetp t) { if (t!=0) { print3(t->lchild); print3(t->rchild); printf("%d ",t->data); } }。
本文分享完毕,希望对大家有所帮助哦。