数据结构——二叉树的操作(遍历及树形输出).doc

数据结构——二叉树的操作(遍历及树形输出).doc

ID:48201378

大小:51.00 KB

页数:13页

时间:2019-11-15

数据结构——二叉树的操作(遍历及树形输出).doc_第1页
数据结构——二叉树的操作(遍历及树形输出).doc_第2页
数据结构——二叉树的操作(遍历及树形输出).doc_第3页
数据结构——二叉树的操作(遍历及树形输出).doc_第4页
数据结构——二叉树的操作(遍历及树形输出).doc_第5页
资源描述:

《数据结构——二叉树的操作(遍历及树形输出).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/*实验三:二叉树遍历操作验证*/#include#include#include#include#include#include#includeusingnamespacestd;#defineOK1#defineERROR0#defineOVERFLOW-2intLeafNum;//叶子结点个数//定义结构体typedefstructBiTNode{chardata;//存放值struc

2、tBiTNode*lchild,*rchild;//左右孩子}BiTNode,*BiTree;//先序输入二叉树结点的值,空格表示空树voidcreateBiTree(BiTree&T){charch;//输入结点时用scanf("%c",&ch);if(ch=='')//若输入空格,该值为空,且没有左右孩子{T=NULL;}else{T=(BiTNode*)malloc(sizeof(BiTNode));//分配结点空间if(!T)//分配失败{exit(OVERFLOW);}T->data=ch;

3、//生成根结点createBiTree(T->lchild);//构造左子树createBiTree(T->rchild);//构造右子树}}//递归方法先序遍历二叉树voidpreOrderTraverse(BiTreeT){if(T)//若非空{if(T->data){//输出printf("%c",T->data);}preOrderTraverse(T->lchild);preOrderTraverse(T->rchild);}}//递归方法中序遍历二叉树voidinOrderTraverse

4、(BiTreeT){if(T)//若非空{preOrderTraverse(T->lchild);if(T->data){//输出printf("%c",T->data);}preOrderTraverse(T->rchild);}}//递归方法后序遍历二叉树voidpostOrderTraverse(BiTreeT){if(T)//若非空{preOrderTraverse(T->lchild);preOrderTraverse(T->rchild);if(T->data){//输出printf("%

5、c",T->data);}}}//层序遍历二叉树voidLevelTraverse(BiTreeT){queueq;//建队q.push(T);//根节点入队BiTreep;while(!q.empty()){p=q.front();//获得队列的首元素q.pop();//首元素出队cout<data<<"";//输出结点的值if(p->lchild!=NULL)//若结点的左孩子不空{q.push(p->lchild);}if(p->rchild!=NULL)//若结点的右孩

6、子不空{q.push(p->rchild);}}}//非递归方法前序遍历二叉树voidstackPreOrderTraverse(BiTreeT){stacks;//建栈s.push(T);//根结点入栈BiTreep;//栈首元素while(!s.empty()){while((p=s.top())&&p){printf("%c",p->data);s.push(p->lchild);//左孩子入栈,直到走到尽头}s.pop();//空指针出栈if(!s.empty()){p=s.t

7、op();//获得栈顶元素s.pop();//出栈s.push(p->rchild);//右孩子入栈}}}//非递归方法中序遍历二叉树voidstackInOrderTraverse(BiTreeT){stacks;//建栈s.push(T);//入栈BiTreep;//栈首元素while(!s.empty()){while((p=s.top())&&p){s.push(p->lchild);//左孩子入栈,直到走到尽头}s.pop();//空指针出栈if(!s.empty()){p=

8、s.top();s.pop();//出栈printf("%c",p->data);s.push(p->rchild);//右孩子入栈}}}//非递归方法后序遍历二叉树voidstackPostOrderTraverse(BiTreeT){stacks;//建栈mapm;//标记结点是否已经输出BiTreep;//栈首元素if(T)//若不是空树{s.push(T);//根结点入栈}while(!s.empty()

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。