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.现在 ...
随机推荐
- SqlServer跨库查询
由于业务的拆分,数据库拆分为两种作用: 汇总数据库(Master,头节点数据库), 子节点数据库(Compute Node,计算子节点数据库) 这样,就设计到子节点访问头节点数据库中的某张汇总表,这种 ...
- Lintcode: Partition Array
Given an array "nums" of integers and an int "k", Partition the array (i.e move ...
- [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- C++多线程调试和测试的注意事项
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”.利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开 ...
- c#读取INI文件类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;na ...
- sql 中英文格式的时间转数字格式
select receiveBillDt,CONVERT(varchar(100), cast(receiveBillDt as datetime), 21),a.LoanDate from Prot ...
- Linux centOS7 下安装mysql5.7.10
1:下载二进制安装包 http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz 2:解压到 ...
- ORACLE CUP相关
遭遇cpu过多占用,表现为%usr很高,top 或者topas中cpu占用最多的进程为oracle server process. 则根据pid可以找出该pid对应的sql_text select s ...
- 二项分布 多项分布 伽马函数 Beta分布
http://blog.csdn.net/shuimu12345678/article/details/30773929 0-1分布: 在一次试验中,要么为0要么为1的分布,叫0-1分布. 二项分布: ...
- qsort函数用法(转)
qsort函数用法 qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(c ...