1110. Complete Binary Tree (25)
来源:互联网 发布:上海民族一厂淘宝官网 编辑:程序博客网 时间:2024/05/18 14:22
Given a tree, you are supposed to tell if it is a complete binary tree.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=20) 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 case, print in one line “YES” and the index of the last node if the tree is a complete binary tree, or “NO” and the index of the root if not. There must be exactly one space separating the word and the number.
Sample Input 1:
9
7 8
- -
- -
- -
0 1
2 3
4 5
- -
- -
Sample Output 1:
YES 8
Sample Input 2:
8
- -
4 5
0 6
- -
2 3
- 7
- -
- -
Sample Output 2:
NO 1
Java AC代码:
import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;public class Main { static final int maxn = 1000+5; static class Node { int data; int lchild = -1; int rchild = -1; } static boolean[] IsRoot = new boolean[maxn]; static void init() { for (int i = 0; i < maxn; i++) { IsRoot[i] = true; } } public static void main(String[] args) { try { init(); ArrayList<Node> nodelist = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(reader.readLine()); for (int i = 0; i < n; i++) { String cas = reader.readLine(); String a = cas.split(" ")[0]; String b = cas.split(" ")[1]; Node nodeab = new Node(); if (!a.equals("-")) { nodeab.lchild = Integer.parseInt(a); IsRoot[nodeab.lchild] = false; } if (!b.equals("-")) { nodeab.rchild = Integer.parseInt(b); IsRoot[nodeab.rchild] = false; } nodelist.add(nodeab); } int root = 0; for (int i = 0; i < n; i++) { if (IsRoot[i] == true) root = i; } ArrayList<Node> list = new ArrayList<>(); list.add(nodelist.get(root)); int last = 0; int cnt = 1; while (list.size() != 0) { Node front = list.get(0); list.remove(front); if (front.lchild != -1) { list.add(nodelist.get(front.lchild)); last = front.lchild; cnt++; } else break; if (front.rchild != -1) { list.add(nodelist.get(front.rchild)); last = front.rchild; cnt++; } else break; } if (cnt == n) System.out.println("YES " + last); else System.out.println("NO " + root); } catch (Exception e) { e.printStackTrace(); } }}
C++:
#include <bits/stdc++.h>using namespace std;const int maxn = 100;struct node { int data, lchild, rchild; node():lchild(-1), rchild(-1){}}nodes[maxn];bool isNode[maxn] = { true };void init() { for (int i = 0; i < maxn; i++) { isNode[i] = true; }}int main(){ init(); int n; scanf("%d", &n); char left[3], right[3]; for (int i = 0; i < n; i++) { scanf("%s %s", left, right); if (left[0] != '-') { nodes[i].lchild = atoi(left); isNode[atoi(left)] = false; } if (right[0] != '-') { nodes[i].rchild = atoi(right); isNode[atoi(right)] = false; } } int root; for (int i = 0; i < n; i++) { if (isNode[i] == true) root = i; } queue<node> q; q.push(nodes[root]); int last = 0; int cnt = 1; while (!q.empty()) { node kfront = q.front(); q.pop(); if (kfront.lchild != -1) { q.push(nodes[kfront.lchild]); cnt++; last = kfront.lchild; } else break; if (kfront.rchild != -1) { q.push(nodes[kfront.rchild]); cnt++; last = kfront.rchild; } else break; } if (cnt == n) printf("YES %d\n", last); else printf("NO %d\n", root); return 0;}
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree
- 1110. Complete Binary Tree
- 1110. Complete Binary Tree
- PAT-Advanced 1110. Complete Binary Tree (25)
- C++单链表选择排序
- 接入层负载均衡技术-lvs为何不能完全替代DNS轮询
- Enum --枚举妙用
- 学习笔记 AVL树
- IE下 jquery的fadeIn与fadeOut方法失效的BUG
- 1110. Complete Binary Tree (25)
- 度度熊回家 (模拟)
- 多线程阻塞类型
- Codeforces Round #428
- bzoj 1602: [Usaco2008 Oct]牧场行走(暴力LCA)
- python opencv入门 傅里叶变换(25)
- 代码REVIEW
- 怎样学习嵌入式Linux
- 实现判断商品折扣价格