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

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

ID:25366276

大小:77.00 KB

页数:40页

时间:2018-11-19

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

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

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

2、ructBiTNode*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->da

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

4、rTraverse(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){/

5、/输出printf("%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

6、!=NULL)//若结点的右孩子不空{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

7、(!s.empty()){p=s.top();//获得栈顶元素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();//空

8、指针出栈if(!s.empty()){p=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. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。