数据结构——顺序存储二叉树
2010-08-01 19:32
495 查看
#include <iostream> using namespace std; #define MAX_NODE_SIZE 100 //二叉树的最大节点数 typedef char SqBiTree[MAX_NODE_SIZE+1]; //0号单元节点个数 //创建二叉树 void creat_tree(SqBiTree &t) { int i=0; char ch; while((ch=getchar())!='$') { i++; t[i]=ch; } t[0]=i; } //获取给定结点(位置)的左孩子的结点位置 int LeftChild_locate(SqBiTree &t,int node) { if ((2 * node) > t[0]) return -1; else return 2 * node; } //获取给定结点(位置)的右孩子的结点位置 int RightChild_locate(SqBiTree &t,int node) { if ((2 * node+1) > t[0]) return -1; else return 2 * node+1; } //层序遍历 void level_order(SqBiTree &t) { for(int i=1;i<=t[0];i++) if(t[i]!='#') cout<<t[i]<<" "; } //先序遍历 void pre_order(SqBiTree &t,int i) { if(t[0]<=0) { cout<<"空树!"<<endl; } else { if(t[i]!='#') cout<<t[i]<<" "; if(LeftChild_locate(t,i)!=-1) //如果左子结点存在,递归 pre_order(t,LeftChild_locate(t,i)); if(RightChild_locate(t,i)!=-1) //如果右子结点存在,递归 pre_order(t,RightChild_locate(t,i)); } } //中序遍历 void mid_order(SqBiTree &t,int i) { if(t[0]<=0) { cout<<"空树!"<<endl; } else { if(LeftChild_locate(t,i)!=-1) //如果左子结点存在,递归 mid_order(t,LeftChild_locate(t,i)); if(t[i]!='#') cout<<t[i]<<" "; if(RightChild_locate(t,i)!=-1) //如果右子结点存在,递归 mid_order(t,RightChild_locate(t,i)); } }//后序遍历 void back_order(SqBiTree &t,int i) { if(t[0]<=0) { cout<<"空树!"<<endl; } else { if(LeftChild_locate(t,i)!=-1) //如果左子结点存在,递归 back_order(t,LeftChild_locate(t,i)); if(RightChild_locate(t,i)!=-1) //如果右子结点存在,递归 back_order(t,RightChild_locate(t,i)); if(t[i]!='#') cout<<t[i]<<" "; } } int main() { cout<<"创建二叉树:"<<endl; SqBiTree sbt; //创建顺序二叉树 creat_tree(sbt); //层序遍历 level_order(sbt); cout<<endl; //先序遍历 pre_order(sbt,1); cout<<endl; //中序遍历 mid_order(sbt,1); cout<<endl; //后续遍历 back_order(sbt,1); cout<<endl; cout<<LeftChild_locate(sbt,3); return 0; }
相关文章推荐
- 看数据结构写代码(22) 二叉树的顺序存储方式
- 数据结构(严蔚敏)二叉树的顺序存储
- 数据结构把顺序存储的二叉树转换成链式存储及前序,中序,后序遍历
- 基于完全二叉树木形成的二叉树顺序存储-数据结构(13)
- 数据结构之---C语言实现二叉树的顺序存储
- 数据结构与算法简记:按层次顺序遍历和存储二叉树
- 数据结构(C实现)------- 顺序队列(循环队列之少用一个存储空间实现) .
- 数据结构之C/C++实现二叉树的链式存储
- 数据结构学习笔记(三) 树形结构之一般二叉树的顺序存储_二叉链表表示法_转换
- 二叉树的链式存储与线索二叉树-数据结构(14)
- 数据结构之线性表——链表的顺序存储(数组描述)
- 数据结构之线性结构的顺序存储(数组)
- 再回首,数据结构——字符串与数组的常见操作(顺序存储)
- 【数据结构之线性表顺序存储】简单的数组的方式实现
- 数据结构中二叉树的的存储、遍历、交换子树、统计二叉树的深度
- 数据结构—队列的顺序和链式存储
- 数据结构之---c语言实现栈的顺序存储
- 数据结构-顺序存储-线性表-基本运算
- 数据结构——二叉树的链式存储操作集合
- 数据结构之线性表顺序存储的常用操作(转载)