欢迎来到天天文库
浏览记录
ID:46395572
大小:72.00 KB
页数:3页
时间:2019-11-23
《二叉树的三种遍历代码及其注释》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#include#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1usingnamespacestd;typedefintStatus;#defineCHAR#ifdefCHARtypedefcharElemType;ElemTypeNil='#';#endiftypedefstructBiTNode{ElemTyped
2、ata;//结点的值BiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;StatusInitBiTree(BiTree&T){//操作结果:构造空二叉树TT=NULL;returnOK;}voidCreateBiTree(BiTree&T){//算法6.4:按先序次序输入二叉树中结点的值(可为字符型或整型,在主程中定义),//构造二叉链表表示的二叉树T。变量Nil表示空(子)树。修改ElemTypech;#ifdefCHARscanf("%c",&ch);#endifif(ch==Nil)T=NULL;else{T=(BiTree)malloc(si
3、zeof(BiTNode));if(!T)exit(OVERFLOW);T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}voidPreOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){if(T){Visit(T->data);PreOrderTraverse(T->lchild,Visit);PreOrderTraverse(T->rchild,Visit);}}voidInOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){if(
4、T){InOrderTraverse(T->lchild,Visit);Visit(T->data);InOrderTraverse(T->rchild,Visit);}}voidPostOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){if(T){PostOrderTraverse(T->lchild,Visit);PostOrderTraverse(T->rchild,Visit);Visit(T->data);}}StatusVisit(ElemTypee){#ifdefCHARprintf("%c",e);#endifreturnOK;}i
5、ntmain(){BiTreeT,p,c;ElemTypee1,e2;inti;InitBiTree(T);//初始化二叉树TCreateBiTree(T);//建立二叉树Tprintf("前序遍历结果:");PreOrderTraverse(T,Visit);printf("");//先序递归遍历二叉树Tprintf("中序遍历结果:");InOrderTraverse(T,Visit);printf("");//中序递归遍历二叉树Tprintf("后序遍历结果:");PostOrderTraverse(T,Visit);printf("");//后序递归遍历二叉树T}
此文档下载收益归作者所有