在本算法中先利用先序遍历创建了树,利用了递归的算法使得算法简单,操作容易,本来无printf(“%c的左/右子树:”, ch);的语句,但由于计算机需要输入空格字符来判断左右子树,为了减少人为输入的失误,特地加入这条语句,以此保证准确率。
#include<stdio.h>#include<stdlib.h>#define ok 1#define error 0#define overflow 3 我有一个坏习惯typedef intqq时尚签名 status; typedef int boolean; typedef char telemtype; typedef struct bitnode{telemtype data;struct bitnode *lchild, *rchild;}bitnode, *bitree; //创建二叉树函数 status createbitree(bitree &t){telemtype ch;scanf("%c", &ch);getchar();if(ch == ' '){t = null;}el {if( !(t=(bitree)malloc(sizeof(bitnode))))(exit(overflow));t->data = ch;printf("%c的左子树:", ch);createbitree(t->lchild);printf("%c的右子树:", ch);createbitree(t->rchild);}return ok;} //先序遍历函数status preordertraver(bitree t, status (* visit)(telemtype e)){if(t){if(visit(t->data)){if(preordertraver(t->lchild, visit)){if(preordertraver(t->rchild, visit)){return ok; } } }return error; }el中山孙文纪念公园 {return ok;}} //中序遍历函数status inordertraver(bitree t, status (* visit)(telemtype e)){if(t){if(preordertraver(t->lchild, visit) ){if(visit(t->data)){if(preordertraver(t->rchild, visit) ){return ok; } } }return error; }el {return ok; }} //后序遍历函数status posordertraver(bitree t, status (* visit)(telemtype e)){if(t){if(preordertraver(t->lchild, visit) ){if(preordertraver(t->rchild, visit) ){if(visit(t->data)){return ok;}}}return error;}el {return ok;}} //输出二叉树函数status printelement(telemtype e){printf("%c",e);return ok;} //主函数int main(){bitree t;printf("输入根结点:");createbitree(t);printf("先序遍历:\n");preordertraver(t, printelement);printf("\n");printf("中序遍历:\n");inordertraver(t, printelement);printf("\n");printf("后序遍历:\n");posordertraver(t, printelement);return 0;}
遍历操作有四种,其不同在于对根结点的访问顺序不同。在先序遍历中,首先访问根结点,然后递归地做左子树的先序遍历,然后是右子树的广东第二师范学院递归先序遍历。 在中序遍历中,递归地对左子树进行中序遍历,访问根结点,最后递归中序遍历右子树。在后序遍历中,递归地对左子树和右子树进行后序遍历,然后访问根结点。先序,中序,后序遍历就是对于根节点的访问顺序。
但无论哪种遍历方式,递归高中英语时态的方法是最简便,最直接,最简单的算法。
运行截图:
到此这篇关于c语言二叉树的遍历示例介绍的文章就介绍到这了,更多相关c语言二叉树内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 10:51:49,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/cb1c95a997bfb392c243612d491cef3e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C语言二叉树的遍历示例介绍.doc
本文 PDF 下载地址:C语言二叉树的遍历示例介绍.pdf
留言与评论(共有 0 条评论) |