PTA 03-树2 List Leaves (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/666
5-4 List Leaves (25分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer NN (\le 10≤10) which is the total number of nodes in the tree -- and hence the nodes are numbered from 0 to N-1N−1. Then NNlines follow, each corresponds to a node, and gives the indices of the left and right children of the node. If the child does not exist, a "-" will be put at the position. Any pair of children are separated by a space.
Output Specification:
For each test case, print in one line all the leaves' indices in the order of top down, and left to right. There must be exactly one space between any adjacent numbers, and no extra space at the end of the line.
Sample Input:
8
1 -
- -
0 -
2 7
- -
- -
5 -
4 6
Sample Output:
4 1 5
大部分代码都是在做数据结构,其它的,就是简单的层序遍历
/*
评测结果
时间 结果 得分 题目 编译器 用时(ms) 内存(MB) 用户
2017-07-08 15:59 答案正确 25 5-4 gcc 2 1
测试点结果
测试点 结果 得分/满分 用时(ms) 内存(MB)
测试点1 答案正确 13/13 1 1
测试点2 答案正确 5/5 2 1
测试点3 答案正确 1/1 1 1
测试点4 答案正确 5/5 2 1
测试点5 答案正确 1/1 1 1
*/
#include<stdio.h>
#include<stdlib.h>
#define MAXLEN 10
struct treenode{
int lc;
int rc;
int isLeaf;
int father;
}; typedef struct tree{
struct treenode nodes[MAXLEN];
int root;
int length;
}*ptrTree; typedef struct queue{
int data[MAXLEN];
int front;
int rear;
}*Que; Que CreateQueue()
{
Que temp;
temp=(Que)malloc(sizeof(struct queue));
temp->front=0;
temp->rear=0;
return temp;
} void EnQueue(Que Q,int item)
{
if((Q->rear+1)%MAXLEN == Q->front)
printf("Queue is full!");
Q->rear=(Q->rear+1)%MAXLEN;
Q->data[Q->rear]=item;
} int DeQueue(Que Q)
{
if(Q->front==Q->rear){
printf("Queue is Empty!");
return -1;
}
Q->front=(Q->front+1)%MAXLEN;
return Q->data[Q->front];
} int IsQueueEmpty(Que Q)
{
return Q->front==Q->rear;
} ptrTree CreateTree()
{
int i;
ptrTree temp;
temp=(ptrTree)malloc(sizeof(struct tree));
for(i=0;i<MAXLEN;i++)
temp->nodes[i].father=-1;
return temp; } void DestroyQueue(Que Q)
{
free(Q);
} void DestroyTree(ptrTree T)
{
free(T);
} void Input(ptrTree T)
{
int i,k,len;
scanf("%d",&len);
getchar();//skip a \n
T->length=len;
for(i=0;i<len;i++)
{
T->nodes[i].lc=getchar()-'0';
getchar();//skip a space
T->nodes[i].rc=getchar()-'0';
getchar();//skip a \n if(T->nodes[i].lc>=0)
T->nodes[T->nodes[i].lc].father=i;
if(T->nodes[i].rc>=0)
T->nodes[T->nodes[i].rc].father=i; if(T->nodes[i].lc<0 && T->nodes[i].rc<0)
T->nodes[i].isLeaf=1;
} for(i=0;i<len;i++){
if(T->nodes[i].father<0){
T->root=i;
break;
}
}
} void Process(ptrTree T,Que Q)
{
EnQueue(Q,T->root);
while(!IsQueueEmpty(Q))
{
int i;
i=DeQueue(Q);
if(T->nodes[i].isLeaf==1)
printf("%d",i);
else {
if(T->nodes[i].lc>=0)
EnQueue(Q,T->nodes[i].lc);
if(T->nodes[i].rc>=0)
EnQueue(Q,T->nodes[i].rc);
}
if(T->nodes[i].isLeaf==1 && !IsQueueEmpty(Q))
printf(" ");
}
} int main()
{
Que Q=CreateQueue();
ptrTree T=CreateTree();
Input(T);
Process(T,Q);
return 0;
}
PTA 03-树2 List Leaves (25分)的更多相关文章
- PTA甲级1094 The Largest Generation (25分)
PTA甲级1094 The Largest Generation (25分) A family hierarchy is usually presented by a pedigree tree wh ...
- L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...
- PTA 04-树5 Root of AVL Tree (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/668 5-6 Root of AVL Tree (25分) An AVL tree ...
- PTA 10-排序5 PAT Judge (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/677 5-15 PAT Judge (25分) The ranklist of PA ...
- PTA 05-树7 堆中的路径 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径 (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...
- 7-4 List Leaves (25分) JAVA
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- PTA 07-图4 哈利·波特的考试 (25分)
哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念 ...
- L2-006 树的遍历 (25 分)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 题目: 给定一棵二叉树的后序遍历和中序 ...
- 03-树2 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
随机推荐
- find missing conjunction, why?
find . -name *.c find: missing conjunction, why? SHELL会把*.c直接扩展成当前工作目录的多个.c文件,所以必须用单引号'*.c'或者/*.c进行转 ...
- 【C#】将数据库读出的数据转换为DataTable类型集合
return View(ConverDataReaderToDataTable(reader)); // 静态方法public static DataTable ConverDataReaderToD ...
- Oracle的数据伪列(ROWNUM)
作者:Vashon 时间:20150414 数据库:Oracle11g 数据伪列(ROWNUM) *范例:查询前5条记录:select rownum,empno,job,hiredate,sal fr ...
- 更新centos系统的python版本
因今天安装一程序需要用到python高版本,所以升级来系统自带的python. 先查询下系统的python版本是多少. #python -V 显示出来的是2.4.3,太老了,现在升级到比较稳定的版本3 ...
- leetcode_1039. Minimum Score Triangulation of Polygon_动态规划
https://leetcode.com/problems/minimum-score-triangulation-of-polygon/ 题意:给定一个凸的N边形(N<=50),每个顶点有一个 ...
- postman对登陆进行压力测试的方法
1.填写完整参数,设置好变量,选择好环境,保存好 2.将变量mobile_phone和password的值以如下图的格式,填写到Excel表格中,然后以csv(逗号分隔)的形式进行保存 3.点击此测试 ...
- postman的关联,即如何在请求中引用上次请求返回的值
做接口测试,一定会遇到这种情况,需要拿上次请求的值在本次请求中使用,比如,我们去测试一个东西,要去登录才能做其他的操作,需要拿到登录返回数据中的某些字段,比如,token啊等... 如果发一次请求,就 ...
- 搜索 || DFS || POJ 1321 棋盘问题
棋盘上#可以放,.不可以放,每行每列只能放一个 *解法:类似八皇后问题 dfs+回溯,考虑每一行和每一列 [[[[dfs的样子]]]]最前面写达到目标状态or不能走下去了 然后return #incl ...
- 连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法
MySQL新版默认使用caching_sha2_password作为身份验证插件,而旧版是使用mysql_native_password.当连接MySQL时报错“plugin caching_sha2 ...
- jquery实现密码强度检测
jquery实现密码强度验证 jquery实现密码强度验证 JS代码: $('#pass').keyup(function(e) { var strongRegex = new RegExp( ...