YTU 3022: 完全二叉树(1)
原文链接:https://www.dreamwings.cn/ytu3022/2595.html
3022: 完全二叉树(1)
时间限制: 1
Sec 内存限制: 128
MB
提交: 26 解决: 7
题目描述
一棵具有n个节点的完全二叉树以顺序方式存储在数组A中,设计一个算法构造该二叉树的链存储结构。
即编写一个函数,将二叉树数组存储形式转移到*Tree中。
其中二叉树的节点定义为
输入
输入只有一行,为二叉树的数组表示形式。
输出
输出只有一行,为二叉树链存储结构的层序遍历.
样例输入
ABCD#EF#G##H##I
样例输出
ABCDEFGHI
比如a[0]的位置是1,它的孩子节点是a[1*2-1]与a[1*2] //减一是因为逻辑位序和物理位序差1
然后利用递归的思想,便可以建立起整个二叉树的链状结构了!
void solve(TBNode *&Tree,char *c,int pos) { if(c[pos-1]=='#'||pos>(int)strlen(c)) //递归出口为该节点为NULL { Tree=NULL; return; } Tree=(TBNode*)malloc(sizeof(Node)); //开辟空间 Tree->data=c[pos-1]; solve(Tree->lchild,c,pos*2); //递归左孩子 solve(Tree->rchild,c,pos*2+1); //递归右孩子 }
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> using namespace std; typedef char ElemType; #define SizeMax 205 typedef struct Node { ElemType data; Node* lchild; Node* rchild; } TBNode; void solve(TBNode *&Tree,char *c,int pos) { if(c[pos-1]=='#'||pos>(int)strlen(c)) //递归出口为该节点为NULL { Tree=NULL; return; } Tree=(TBNode*)malloc(sizeof(Node)); //开辟空间 Tree->data=c[pos-1]; solve(Tree->lchild,c,pos*2); //递归左孩子 solve(Tree->rchild,c,pos*2+1); //递归右孩子 } void Print(TBNode *Tree) { TBNode *p; TBNode *qu[SizeMax]; int front,rear; front=rear=-1; rear++; qu[rear]=Tree; if(Tree==NULL)return; while(front!=rear) { front=(front+1%SizeMax); p=qu[front]; printf("%c",p->data); if(p->lchild!=NULL) { rear=(rear+1)%SizeMax; qu[rear]=p->lchild; } if(p->rchild!=NULL) { rear=(rear+1)%SizeMax; qu[rear]=p->rchild; } } } int main() { char c[205]; TBNode *Tree; gets(c); solve(Tree,c,1); Print(Tree); return 0; }
YTU 3022: 完全二叉树(1)的更多相关文章
- [LeetCode] Count Complete Tree Nodes 求完全二叉树的节点个数
Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...
- ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)
1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 177 Solved: 136[Submit][Status ...
- ytu 1058: 三角形面积(带参的宏 练习)
1058: 三角形面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 190 Solved: 128[Submit][Status][Web Boar ...
- ytu 1980:小鼠迷宫问题(DFS 深度优先搜索)
小鼠迷宫问题 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 1 Solved: 1 [Submit][Status][Web Board] Desc ...
- PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)
L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...
- [nowCoder] 完全二叉树结点数
给定一棵完全二叉树的头节点head,返回这棵树的节点个数.如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法. 分析:遍历的话不管是前序.中序.后序还是层次都是O(N),低于O(N)只能是 ...
- 完全二叉树的高度为什么是对lgN向下取整
完全二叉树的高度为什么是对lgN向下取整呢? 说明一下这里的高度:只有根节点的树高度是0. 设一棵完全二叉树节点个数为N,高度为h.所以总节点个数N满足以下不等式: 1 + 21 + 22 +……+ ...
- [itint5]完全二叉树节点个数的统计
http://www.itint5.com/oj/#4 这题是利用完全二叉树的性质计算节点数目.那么是通过比较左右子树的最左结点的高度来看那边是满的,然后递归计算. //使用getLeftChildN ...
- [九度OJ]1113.二叉树(求完全二叉树任意结点所在子树的结点数)
原题链接:http://ac.jobdu.com/problem.php?pid=1113 题目描述: 如上所示,由正整数1,2,3……组成了一颗特殊二叉树.我们已知这个二叉树的最后一个结点是n.现在 ...
随机推荐
- MySQL部分1
MySQL有三个层次 1.文件层次:放在硬盘上存东西的 必须要放在硬盘上 2.服务层次:必须要通过MySQL这个服务才能操作里面哪个内容 3.界面层次:默认不提供界面,需要安装navicat8(界面 ...
- SpringMvc的数据绑定流程
在SpringMvc中会将来自web页面的请求和响应数据与controller中对应的处理方法的入参进行绑定,即数据绑定.流程如下: -1.SpringMvc主框架将ServletRequest对象及 ...
- drop,delete,truncate区别
drop,delete,truncate区别 drop-->删除少量信息 eg:drop table 表名: delete-->删除某些数据 eg:delete from 表名: ...
- Myeclipse10编写jsp时出现 Multiple annotations found at this line:
今天,老师讲完课做了一个小练习,就是编写一个jsp页面.写完后,我发现少些了点东西,我准备使用<% %>添加是发现,报错了 Multiple annotations found at th ...
- struts配置通配符*来匹配方法,实现动态调用
01:web.xml中配置,启动struts2 <?xml version="1.0" encoding="UTF-8"?> <web-app ...
- 解决ScrollView与ListView事件冲突
1,在最近做项目的时候使用ScrollView嵌套ListView的时候发现ListView的滑动效果失效,简单的网上搜索了一下,也就有了下面的解决方法,在ListView中设置事件的监听listvi ...
- 关于用php插入汉字到oracle中出现不乱码问题
$conn = oci_pconnect("IBADMINTON", "5206576360", $db,'utf8'); 在代码中加入‘utf8’即可: ...
- paper 92:图像视觉博客资源2之MIT斯坦福CMU
收录的图像视觉(也包含机器学习等)领域的博客资源的第二部分,包含:美国MIT.斯坦福.CMU三所高校 1)这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享 ...
- IntelliJ IDEA 14注册码
User:xring Key:21423-V4P36-U7W8K-8CYUK-93HXA-MKGZ5 User:arix Key:52998-LJT74-J7YEX-UPVT3-Q5GUF-5G4B5 ...
- android怎么换背景图片
我不晓得一般是怎么做的,但是至少可以用两种方法,一种是用一个全屏的ImageView来当作背景,通过修改imageview来修改背景图片,一种是将你xml中最外层的那个布局,LinerLayout之类 ...