数据结构把顺序存储的二叉树转换成链式存储及前序,中序,后序遍历
来源:互联网 发布:同花顺看盘软件 编辑:程序博客网 时间:2024/05/19 16:07
代码如下:
#include<iostream>#include<string.h>#include<stdio.h>#include<stack>#define MAX 10using namespace std;typedef struct node{ char data; node *lchild; node *rchild; }BTnode,*BinTree;typedef struct elem{ char data; int lchild,rchild; int tag; BTnode *link; }element;element A[MAX];BinTree root;BTnode *p,*pl,*pr;stack<BinTree>ST;BTnode* BuildTree(){ for(int i=0;i<MAX;i++){ if(A[i].tag==-1){ p=new BTnode; p->data=A[i].data; A[i].tag=1; A[i].link=p; }else{ p=A[i].link; } if(A[i].lchild!=-1){ int j=A[i].lchild; pl=new BTnode; pl->data=A[j].data; A[j].tag=1; A[j].link=pl; p->lchild=pl; }else{ p->lchild=NULL; } if(A[i].rchild!=-1){ int j=A[i].rchild; pr=new BTnode; pr->data=A[j].data; A[j].tag=1; A[j].link=pr; p->rchild=pr; }else{ p->rchild=NULL; } } return A[0].link;}void PreOrder(BinTree root){ while(!ST.empty()) ST.pop(); p=root; while(p!=NULL||(!ST.empty())){ if(p!=NULL){ ST.push(p); cout<<p->data<<endl; p=p->lchild; }else{ p=ST.top(); ST.pop(); p=p->rchild; } }}void InOrder(BTnode* root){ while(!ST.empty()) ST.pop(); p=root; while(p!=NULL||(!ST.empty())){ if(p!=NULL){ ST.push(p); p=p->lchild; }else{ p=ST.top(); cout<<p->data<<endl; ST.pop(); p=p->rchild; } }}typedef struct Node{ BTnode* ptr; char tag; }e;stack<e>Stack;e w;void PosOrder(BTnode* root){ p=root; while(!Stack.empty()) Stack.pop(); while(p!=NULL||(!Stack.empty())){ if(p!=NULL){ w.ptr=p; w.tag='L'; Stack.push(w); p=p->lchild; }else{ w=Stack.top(); Stack.pop(); p=w.ptr; if(w.tag=='L'){ w.tag='R'; Stack.push(w); p=p->rchild; }else{ printf("%c\n",p->data); //cout<<p->data<<endl; p=NULL; } } }}int main(){ for(int i=0;i<MAX;i++){ scanf("%s %d %d",&A[i].data,&A[i].lchild,&A[i].rchild); A[i].tag=-1; A[i].link=NULL; } root=BuildTree(); PreOrder(root); puts(""); InOrder(root); puts(""); PosOrder(root); getchar();getchar();getchar();getchar();getchar(); getchar();getchar();getchar();getchar();getchar();return 0; }
- 数据结构把顺序存储的二叉树转换成链式存储及前序,中序,后序遍历
- 二叉树链式存储及前序遍历
- 顺序存储的前序遍历(二叉树)
- 二叉树的链式存储结构 前序 后序 中序 层序遍历操作实现 判断是否完全二叉树
- 二叉树的存储结构与前序遍历(中序/后序原理一样)
- 简单二叉树的构造,前序遍历顺序为;中序遍历顺序为;后序遍历顺序为;
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- C++数据结构--二叉树的前序遍历,中序遍历,后序遍历
- 完全二叉树的顺序存储与非递归算法前序遍历
- 常用数据结构-二叉树的链式存储、建立和遍历
- 二叉树的前序遍历、中序遍历及后序遍历
- 树的先序,中序,后序递归遍历(链式存储结构)
- 07-1链式二叉树,前序、中序、后序遍历
- 数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历
- 数据结构第六章-二叉树顺序存储变链式存储
- 二叉树的链式存储实现及遍历
- 【数据结构】二叉树的顺序存储结构--遍历二叉树
- python实现二叉树的前、中、后序遍历及按层遍历
- UVA 558 判断负环
- fedora15 下openc搭建
- ios游戏开发 Sprite Kit教程:初学者 3
- freemarker语法带小例子
- tftp搭建
- 数据结构把顺序存储的二叉树转换成链式存储及前序,中序,后序遍历
- securecrt的vbs脚本
- SQL语句大全
- hdu1512 二项堆
- 学Javascript也可以装B
- Linux设备驱动---内核定时器
- JSON、JAVA互转方法
- 河南科技学院CSDN高校俱乐部2013年纳新结束
- net穿越的代码