1110. Complete Binary Tree (25) <完全二叉树>
来源:互联网 发布:草东没有派对知乎 编辑:程序博客网 时间:2024/05/16 00:27
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:97 8- -- -- -0 12 34 5- -- -Sample Output 1:
YES 8Sample Input 2:
8- -4 50 6- -2 3- 7- -- -Sample Output 2:
NO 1
#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#include<queue>#include<vector>#include<set>#include<map>#include<stack>using namespace std;typedef struct tree{int num,left,right;}tree;tree t[1000];int n;int father[1000]; int cnt=1;int endx=0,start;int find(int x){if(x==father[x]) return x;return father[x]=find(father[x]);}void cengxu(int x){queue<int> que;que.push(x);endx=x;while(que.size()){int num=que.front();que.pop();if(t[num].left!=-1){que.push(t[num].left);endx=t[num].left;cnt++;} else{if(cnt==n) cout<<"YES "<<endx; else cout<<"NO "<<start; return; } if(t[num].right!=-1){que.push(t[num].right);endx=t[num].right;cnt++;}else{if(cnt==n) cout<<"YES "<<endx; else cout<<"NO "<<start; return; } //if(t[num].left==-1||t[num].right==-1){//} }}int main(){cin>>n;for(int i=0;i<1000;i++) father[i]=i;for(int i=0;i<n;i++){char a[4],b[4]; scanf("%s %s",a,b); if(a[0]!='-'){int sum=0;for(int i=0;i<strlen(a);i++) sum=sum*10+a[i]-'0';father[sum]=i;t[i].left=sum;}else t[i].left=-1;if(b[0]!='-'){int sum=0;for(int i=0;i<strlen(b);i++) sum=sum*10+b[i]-'0';father[sum]=i;t[i].right=sum;}else t[i].right=-1;}start=find(0);cengxu(start);return 0;}
- 1110. Complete Binary Tree (25)[完全二叉树]
- 1110. Complete Binary Tree (25) <完全二叉树>
- 1110. Complete Binary Tree (25)完全二叉树
- 完全二叉树(Complete Binary Tree)
- 1110. Complete Binary Tree (判断完全二叉树)
- pat甲1110. Complete Binary Tree(完全二叉树)
- 1110. Complete Binary Tree (25) 完全二叉树、树的遍历
- 1110. Complete Binary Tree (25) -- 完全二叉树相关性质, 求树根两种方法
- PAT-1064 Complete Binary Search Tree(完全二叉树)
- 满二叉树(Full Binary Tree)&&完全二叉树(Complete Binary Tree)
- 用二叉链表实现完全二叉树 (Linked Complete Binary Tree) 的实现(一)
- 用二叉链表实现完全二叉树 (Linked Complete Binary Tree) 的实现(二)
- 04-树6 Complete Binary Search Tree 完全二叉搜索树
- pat(A) 1064. Complete Binary Search Tree(完全二叉树的中序建树)
- pat 甲1064. Complete Binary Search Tree (完全二叉搜索树)
- PAT 1064. Complete Binary Search Tree (30) 快速建立完全二叉树
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 如何解决error: failed to push some refs
- hdu 2092 整数解
- ruby06
- 简单的谈几个经常抱团出现的家伙,Redis/Memcache/MongoDb
- Java<<、>>与>>>移位操作(二)
- 1110. Complete Binary Tree (25) <完全二叉树>
- hdu 2095 find your present (2)
- swift纯代码UITabBarController的使用
- M
- day04
- VBA 中的UBound
- 八大排序算法之-冒泡排序 java代码
- Tempter of the Bone(树的直径)
- 数据结构栈之进制转换