SWUST OJ 980: 输出利用先序遍历创建的二叉树的层次遍历序列
【24行】之前看到众多巨佬用数组写二叉树,然后在他们的基础上,我发现层序遍历完全可以用数组写并且代码不超过30行。也许他们认为过于简单故未单独写博文,于是我打算补一下,希望各位不要在意。
题目:
用数组的下标为1的位置存储二叉树的根节点,由二叉树的性质可知,其左孩子位于下标2*i的位置上,同理,右孩子就位于下标2*i+1的位置上。
这里其实有一个规律,如果根节点是a[1]的话,那么其左右孩子分别是a[2],a[3],由先序的递归创建可知,当总根节点创建完毕后,就让其左孩子a[2]为根节点,那么他的左右孩子分别是a[4],a[5];按照这样的规律往下走,你会发现,这棵二叉树在数组中二的存储完全就是按照层序遍历的顺序存储的。
下面举两个梨子:(未画出a[0],且\表示未存数据)
由上,可以得出代码如下:
#include <iostream>
using namespace std;
char a[100]={0};
void create(int i)
{char data;cin>>data;if(data!='#'){a[i]=data;create(2*i);//递归创建左节点create(2*i+1);//递归创建右节点}
}
int main()
{create(1);//在数组下标为1的位置上创建二叉树的根节点for(int i=0;i<100;i++)//遍历存储二叉树的这个数组,如果a[i]存储了二叉树的结点,那么直接输出a[i]{if(a[i]>='A'&&a[i]<='Z')cout<<a[i];}return 0;
}
SWUST OJ 980: 输出利用先序遍历创建的二叉树的层次遍历序列相关推荐
- SWUST OJ#1052 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
目录 题目 思路 代码 题目 题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的双亲结点.约定二叉树结点数据为单个大写英文字符.当接收的数据是字符"#"时表示该结点 ...
- SWUST OJ 978: 输出利用先序遍历创建的二叉树的中序遍历序列
题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建 ...
- SWUST OJ 1051: 输出利用先序遍历创建的二叉树中的指定结点的子结点
先吐槽一下"孩子"居然是禁止使用的词汇?!我说"孩子节点都不行"嘛 题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的儿子结点.约定二叉树结点数 ...
- SWUST OJ 1052: 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的双亲结点.约定二叉树结点数据为单个大写英文字符.当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点.最 ...
- SWUST OJ 1053: 输出利用先序遍历创建的二叉树中的指定结点的度
水了三题一摸一样的题目,好快乐 题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度.约定二叉树结点数据为单个大写英文字符.当接收的数据是字符"#"时表示该结点不需 ...
- #swust oj978,979,980输出利用先序遍历创建的二叉树的中序遍历序列,后序遍历序列,层次遍历序
输出利用先序遍历创建的二叉树的中序遍历序列,后序遍历序列,层次遍历序列 ***层次遍历思路: 1.初始化一个队列 2.把根节点指针入队 3.队列非空时:出队列取得一个结点指针,访问该节点,若该节点的左 ...
- SWUST OJ 971: 统计利用先序遍历创建的二叉树的深度
题目描述 利用先序递归遍历算法创建二叉树并计算该二叉树的深度.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树 ...
- SWUST OJ 980
输出利用先序遍历创建的二叉树的层次遍历序列 利用先序递归遍历算法创建二叉树并输出该二叉树的层次遍历序列.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的 ...
- c++根据二叉树的层次遍历建立二叉树_二叉树-层次遍历(C++)
Today,叨叨Chen继续给大家分享算法啦.层次遍历二叉树是大家再熟悉不过的二叉树操作了,看到这个算法通常会联想到队列,没错,叨叨Chen设计的层次遍历算法也是用到了队列(先进先出),下面一起进入算 ...
最新文章
- Mybatis使用接口开发
- CYQ.Data 轻量数据访问层(五) 构造数据行
- android代码记录日期,Android日期和时间选择器实现代码
- Linux多线程——异步
- 给定key值,在Binary Search Tree中查找最接近该键值的结点集合
- lua52 C API测试代码
- java+random+oracle,oracle随机数 — dbms_random
- 计算机2013知识,【2013年计算机基础知识习题与答案(三)】- 环球网校
- first network error, wait for 15 seconds
- 思科路由器的基本配置1
- Redis----centOs7.4 __X64下配置和运行
- Linux 内存管理之 SLUB分配器(5):slub初始化过程
- 电脑照片抠图软件哪个好?来看看这两个简单好用的工具
- php开发h5游戏教程,HTML5实现魔方游戏的代码
- 如何使用WiFi的WPS功能
- Primitive Function 归一化方向角
- php微信jssdk获取位置,微信公众号获取用户地理位置
- 【Python】未知来源的Python 2020期末考试试题,大家可以来答题学习了
- 空间射线与三角形相交算法的两种实现
- 数学:确定性的丧失---第八章 不合逻辑的发展:天堂之门