顺序存储转为链接存储(二叉树)
来源:互联网 发布:mac rar文件 编辑:程序博客网 时间:2024/05/24 22:44
1.题目:
Problem Description
设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用顺序存储表示。现输入其数组各元素值(空二叉树用'#'表示),建立该二叉树,要求将该二叉树的顺序存储结构转换为二叉链表存储结构,并输出其前序遍历序列。
Input
第一行为一个整数n,表示以下有n组数据,每组数据占一行,为其数组各元素值(空二叉树用'#'表示),每组数据长度不超过50。
Output
输出该二叉树的前序遍历序列,空二叉树则不输出任何信息。
Sample Input
2ABC#DABCDE#F
Sample Output
ABDCABDECF
2.参考代码:
#include <iostream>#include <string.h>using namespace std;char str[111];struct BiNode{char data;BiNode* lchild,* rchild;};BiNode* Creat(int i,int n){BiNode* root=new BiNode;root->data=str[i];root->lchild=root->rchild=NULL; ///把左右孩子初始化为空,因为在前序遍历///的时候会判断当前结点是否为空,不为空的话,它的data域才有值,然后才要输出。if(2*i<=n)root->lchild=Creat(2*i,n); ///建立左子树if(2*i+1<=n)root->rchild=Creat(2*i+1,n); ///建立右子树return root;}void PreOrder(BiNode* root){if(root==NULL)return ;else{if(root->data!='#')cout<<root->data;PreOrder(root->lchild);PreOrder(root->rchild);}}int main(){int n,len;cin>>n;while(n--){cin>>str+1;len=strlen(str+1);if(str[1]=='#') ///如果第一个为#号则继续continue;BiNode* root=Creat(1,len);PreOrder(root);cout<<endl;}return 0;}
- 顺序存储转为链接存储(二叉树)
- 链接存储转为顺序存储(二叉树)
- 二叉树的顺序存储转化为链接存储
- 二叉树顺序存储
- 顺序存储二叉树
- 二叉树-顺序存储
- 第十一周项目一(3)~~由顺序存储结构转为二叉链存储结构
- 第十一周项目一(5)由顺序存储结构转为二叉链存储结构
- 第十一周【项目一-(2-3)由顺序存储结构转为二叉链存储结构】
- 第10周项目1(2)-由顺序存储结构转为二叉链存储结构
- 第十一周项目1--(2)二叉树构造算法的验证--由顺序存储结构转为二叉链存储结构
- 第十周项目一 二叉树构造算法的验证---由顺序存储结构转为二叉链存储结构(4)
- 第十一周项目1-二叉树构造算法的验证--由顺序存储结构转为二叉链存储结构
- 第十一周 项目1-二叉树构造算法的认证--由顺序存储结构转为二叉链存储结构
- 二叉树顺序存储(java实现)
- 二叉树的建立(顺序存储)
- 二叉树的顺序存储
- 二叉树的顺序存储
- 关于vc6程序拖拽文件WM_DROPFILE在win7,win8,vista上不能响应的解决方法
- Android之TabHost
- C语言 之 文件
- LTE射频拉远单元数字中频方案(七)
- 一元二次方程求解
- 顺序存储转为链接存储(二叉树)
- poj 2699 The Maximum Number of Strong Kings 网络流
- 分布式大作业p2p聊天室
- Android Fragment应用实战,使用碎片向ActivityGroup说再见
- 积累的VC编程--图标、光标及位图(转)
- 优酷客户端或者网页浏览器 播放视频花屏的解决方法
- SPOJ NWERC11A_Binomial coefficients
- 杭电字符串之1106(模拟)
- 逻辑表达式的运用