题目地址 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分)的更多相关文章

  1. PTA甲级1094 The Largest Generation (25分)

    PTA甲级1094 The Largest Generation (25分) A family hierarchy is usually presented by a pedigree tree wh ...

  2. L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...

  3. 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 ...

  4. 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 ...

  5. PTA 05-树7 堆中的路径 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径   (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...

  6. 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 ...

  7. PTA 07-图4 哈利·波特的考试 (25分)

    哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念 ...

  8. L2-006 树的遍历 (25 分)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 题目: 给定一棵二叉树的后序遍历和中序 ...

  9. 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 ...

随机推荐

  1. MVC模式到传统风格的Spring MVC

    现在我们要做个简单的基于servlet的MVC的模型,我们要有一个Product要从表单处获取. MVC中的M是模型,V是视图,C是控制器.视图负责应用的展示,模型封装了数据和业务逻辑,控制器负责接收 ...

  2. python中的sort和sorted

    共同点 都有三个参数, cmp用户自定义(指定函数),每个元素都会调用,效率没key高 key带一个参数的函数,用来为每个元素提取比较值 reverse=True    翻转 sort sort作用的 ...

  3. 通用mapper的generator

    <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-genera ...

  4. Java GUI 基础组件

    1.JLabel  标签 构造函数: JLabel() JLabel(String text) JLabel(String text,int align)     //第二个参数设置文本的对齐方式,常 ...

  5. jQuery选择器之表单对象属性筛选选择器

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...

  6. 【Jenkins】Jenkins配置从节点,实现远程主机调用功能

    一.需求 使用Jenkins进行持续集成部署过程中,需要用到远端主机的处理功能.如部署到远程主机.文件备份等功能 二.思路 1.当远端主机为Linux系统时使用Publish Over SSH Plu ...

  7. FragmentTabHost实现标签卡效果

    转载请注明原文链接:http://www.cnblogs.com/yanyojun/p/8099523.html 代码已上传到github:https://github.com/YanYoJun/Fr ...

  8. COGS 1743. 忠诚

    ★   输入文件:faithful.in   输出文件:faithful.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 老管家是一个聪明能干的人.他为财主工作了整整1 ...

  9. 第一周作业javaee strainmap

  10. docker 深入理解之cgroups

    cgroups 资源限制 cgroups 是什么 cgroups 最初名为process container,有Google工程师Paul Menage和Rohit Seth于 2006 年提出,后由 ...