03-树1. 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 N (<=10) which is the total number of nodes in the tree -- and hence the nodes are numbered from 0 to N-1. Then N lines 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
这是一个简单的二叉树,根据题目给出的结点创建一颗树,然后按层次遍历,把叶节点按顺序输出。
1 #include <iostream>
2 #include <cstdlib>
3 #include <set>
4 #include <queue>
5 #include <cstring>
6 #include <string>
7 using namespace std;
8
9 struct node //结点结构体
10 {
11 int leftchild; //左儿子
12 int rightchild; //右儿子
13 node () //初始化
14 {
15 leftchild=-1;
16 rightchild=-1;
17 }
18 };
19 node n[20];
20 bool r[20]; //记录是否是根结点
21 queue<int> q; //有队列遍历树
22 int t=0;
23
24 void traversal(int a) //根据根节点a遍历树并且把也结点输出
25 {
26 q.push(a);
27 while (!q.empty())
28 {
29
30 int j=q.front();
31 //cout <<"q.pop() "<<j<<endl;
32 q.pop();
33 if (n[j].leftchild==-1&&n[j].rightchild==-1)//没有左儿子和有儿子则为叶子
34 {
35 if (t==0)//第一个叶节点直接输出,以后每个结点前有一个空格
36 {
37 cout <<j;
38 t=1;
39 }
40 else
41 {
42 cout <<" "<<j;
43
44 }
45 }
46 if (n[j].leftchild!=-1)
47 {
48 q.push(n[j].leftchild); //左儿子存在,压入队列
49 }
50 if (n[j].rightchild!=-1)
51 {
52 q.push(n[j].rightchild);//左右子存在,压入队列
53 }
54 }
55 }
56 int main()
57 {
58 char a,b;
59 int m;
60 while (cin>>m)
61 {
62 memset(r,false,sizeof(r));
63 for (int i=0;i<m;i++)//根据输入数据构建树
64 {
65 cin>>a>>b;
66 if (a>='0'&&a<='9')
67 {
68 n[i].leftchild=a-48;
69 r[a-48]=true;
70 }
71 if (b>='0'&&b<='9')
72 {
73 n[i].rightchild=b-48;
74 r[b-48]=true;
75 }
76 }
77 for (int i=0;i<m;i++)
78 {
79 if (!r[i])
80 {
81 traversal(i);
82 //cout <<"i"<<i<<endl;
83 cout <<endl;
84 break;
85 }
86 }
87 }
88 return 0;
89 }
03-树1. List Leaves (25)的更多相关文章
- 03-树2. List Leaves (25) 二叉树的层序遍历
03-树2. List Leaves (25) 题目来源:http://www.patest.cn/contests/mooc-ds/03-%E6%A0%912 Given a tree, you a ...
- L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...
- pat03-树2. List Leaves (25)
03-树2. List Leaves (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Given a t ...
- 03-树1 树的同构(25 point(s)) 【Tree】
03-树1 树的同构(25 point(s)) 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为 ...
- 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 ...
- 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 ...
- 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 ...
- 浙大数据结构课后习题 练习三 7-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. I ...
随机推荐
- 利用radio实现纯css选项卡切换
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtIAAABCCAIAAAD18aaXAAAG70lEQVR4nO3dO5KrPBCGYRY0VV4OEX
- py正则表达式
1.元字符 . ^ $ * + ? {} [] \ | () --> [] : - 常用来指定一个字符集:[abc], [a-z] 匹配任意一个字符 - 元字符在字符集中不起作用:[akm ...
- CentOS6下编译安装Python2.7.6方法
关于在CentOS6下编译安装Python2.7.6的方法非常的多了,小编以前也介绍过相关的文章了,下面一聚教程小编再来为各位介绍一下吧,希望文章能帮助到各位. CentOS下面Python在升级 ...
- Eratosthenes筛选法计算质数
<C和指针>第6章第4道编程题: 质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法.这个算法的第一步就是写下所有从2至某个上限之间的所有整数.在算法的 ...
- php版权重轮询调度算法
2013-09-25 <?php class WeightedRoundRobin { private static $_weightArray = array(); private stati ...
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...
- arcgis api for silverlight
原文 http://blog.sina.com.cn/s/blog_4638cf7b0100wntt.html arcgis api for silverlight(1) (2011-09-21 09 ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- kabina启动配置
启动 kibana # /usr/local/kibana-4.1.1-linux-x64/bin/kibana zjtest7-redis:/usr/local/kibana-4.5.3-linux ...
- 大数据时代的数据存储,非关系型数据库MongoDB(一)
原文地址:http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Da ...