二叉树的遍历 非递归操作
来源:互联网 发布:知乎 英国金融硕士学费 编辑:程序博客网 时间:2024/05/02 22:08
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <queue>#include <stack>#include <iostream>using namespace std;typedef struct BiTNode{char data;BiTNode *lchild, *rchild;}BiTNode,*BiTree;BiTree T;void CreateBiTree(BiTree &T){char ch;scanf("%c",&ch);if(ch=='@'){T=NULL;return;}else{T=(BiTree)malloc(sizeof(BiTNode));T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}void midTraverse(BiTree T){stack<BiTree> S;if(!T){printf("空树!\n");return;}while(T || !S.empty()){while(T){S.push(T);T=T->lchild;}T=S.top();S.pop();printf("%c",T->data);T=T->rchild;}}void PreTraverse(BiTree T){stack<BiTree> S;if(!T){printf("空树!\n");return;}while(T || !S.empty()){while(T){S.push(T);printf("%c",T->data);T=T->lchild;}T=S.top();S.pop(); T=T->rchild;}}void behindTraverse(BiTree T){ stack<BiTree>S1; stack<BiTree>S2; BiTree cur; S1.push(T); if(!T){printf("空树!\n");return;} while(!S1.empty()) { cur=S1.top(); S1.pop(); S2.push(cur); if(cur->lchild) S1.push(cur->lchild); if(cur->rchild) S1.push(cur->rchild); } while(!S2.empty()) { cout<<S2.top()->data; S2.pop(); }}int main(){CreateBiTree(T);PreTraverse(T);printf("\n"); midTraverse(T);printf("\n");behindTraverse(T);printf("\n");return 0;}
0 0
- 二叉树的非递归遍历操作
- 二叉树的遍历 非递归操作
- ~二叉树的非递归遍历操作~
- 二叉树的遍历--非递归操作
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 遍历二叉树的各种操作(非递归遍历)
- 【数据结构】顺序线性表的插入、删除、合并实现
- hdu 5533 Dancing Stars on Me 【2015ACM/ICPC亚洲区长春站-重现赛(感谢东北师大)】
- 扑克程序 Python
- ubuntu上的sh链接到dash,如何重新设置到bash呢?
- HDFS shell 命令
- 二叉树的遍历 非递归操作
- 杭电ACM1010
- nyoj--61--传纸条(一)(动态规划)
- ARP和RARP属于哪层的协议?
- Regular Expression Matching
- OC的点语法(点运算符)使用说明
- IceGrid 应用配置手册
- 第一篇博文:Web前端学习,从这里启航
- svn的服务器的配置