数据结构学习笔记(三) 树形结构之一般二叉树的顺序存储_二叉链表表示法_转换
2018-01-22 16:43
330 查看
以下是一般二叉树的顺序存储表示法到二叉链表表示法的转换,最后用前序遍历的方式输出的代码。
//一般二叉树的顺序存储表示法到二叉链表表示法的转换 #include<iostream> using namespace std; //抽象数据类型——变量定义和变量说明 const char MaxSize=10; typedef int datatype; typedef struct node { datatype data; struct node *lchild,*rchild; }BTnode,*BinTree; typedef struct elem { datatype data; int lchild,rchild;//-1表示空 int tag;//对应结点是否被生成的标志,初态为0,生成后为1 BTnode *link;//存放结点地址,初态为NULL }element; element A[MaxSize]; //初始化顺序存储表示法表示的二叉树 void Initialize() { A[0]={'A',1,6,0,NULL}; A[1]={'B',2,3,0,NULL}; A[2]={'D',-1,-1,0,NULL}; A[3]={'E',4,5,0,NULL}; A[4]={'H',-1,-1,0,NULL}; A[5]={'I',-1,-1,0,NULL}; A[6]={'C',7,9,0,NULL}; A[7]={'F',-1,8,0,NULL}; A[8]={'J',-1,-1,0,NULL}; A[9]={'G',-1,-1,0,NULL}; } //转化函数y void Exchange(element* A,BinTree &root) { for(int i=0;i<MaxSize;i++) { BTnode *p=new BTnode; if(A[i].tag==0) { A[i].link=p; A[i].tag=1; p->data=A[i].data; } else p=A[i].link; if(A[i].lchild!=-1) { int j=A[i].lchild; BTnode *pl=new BTnode; A[j].link=pl; A[j].tag=1; pl->data=A[j].data; p->lchild=pl; } else p->lchild=NULL; if(A[i].rchild!=-1) { int j=A[i].rchild; BTnode *pr=new BTnode; A[j].link=pr; A[j].tag=1; pr->data=A[j].data; p->rchild=pr; } else p->rchild=NULL; } root=A[0].link; } //使用递归进行前序遍历输出 void preOrder(BinTree &root) { BTnode *p=root; if(p!=NULL) { cout<<char(p->data)<<" "; preOrder(p->lchild); preOrder(p->rchild); } } //测试函数 int main() { BinTree root; Initialize(); Exchange(A,root); cout<<"前序遍历输出转化后的二叉树:"<<endl; preOrder(root); return 0; }
相关文章推荐
- 数据结构把顺序存储的二叉树转换成链式存储及前序,中序,后序遍历
- 数据结构(严蔚敏)二叉树的二叉链表存储表示
- 数据结构之---C语言实现二叉树的二叉链表存储表示
- 用二叉链表存储结构构造一棵二叉树,然后用栈结构进行非递归遍历
- 数据结构(六)树----树、森林与二叉树的转换及树的存储结构
- 二叉树的简单介绍和二叉树的二叉链表存储表示
- 数据结构学习笔记(三) 树形结构之二叉树的前、中、后序遍历递归方法
- 采用二叉链表作为二叉树的存储结构
- 二叉树的二叉链表存储表示
- 数据结构——顺序存储二叉树
- 二难树顺序与链接存储结构的转换
- 数据结构之---C语言实现二叉树的三叉链表存储表示
- 数据结构学习笔记(三) 树形结构之对称序线索化二叉树
- 广义表表示二叉树结构生成二叉链表的算法
- 数据结构——栈的顺序存储表示
- 树的概念总结;树的存储结构;树、二叉树、森林的相互转换
- 7-11 将二叉树的顺序存储结构转换成二叉链存储结构
- 二叉树的表示链式表示和顺序存储3.0
- 数据结构与算法简记:按层次顺序遍历和存储二叉树
- 二叉树采用二叉链表结构表示。设计并实现如下算法:后序递归建树,先序非递归遍历该树。