1110. Complete Binary Tree (25)
来源:互联网 发布:企业网管软件 编辑:程序博客网 时间:2024/05/18 13:46
题目地址
题目大意:给一棵二叉树,判断是否为完全二叉树,如果是完全二叉树,输出YES和最后一个节点编号,如果不是,输出NO和根节点编号。
#include <iostream>#include<queue>#include<cstdio>using namespace std;typedef struct node{ int left; int right;}Node[21];bool cengci(Node nn,int r,int& last,int n){ queue<int> q; int tou; int i=0; q.push(r); while(!q.empty()) { tou=q.front(); q.pop(); if(tou==-1)///从左往右 第一个空节点 break; i++; last=tou; q.push(nn[tou].left); q.push(nn[tou].right); } if(n==i)///如果层次遍历的节点数等于总的节点数,说明是完全二叉树 否则说明后面还有节点 return true; else return false;}int main(){ int n,root,last; Node nd; int pre[21]; for(int i=0;i<21;i++) { nd[i].left=-1; nd[i].right=-1; pre[i]=-1;///存父节点 } cin>>n; root=0; for(int i=0;i<n;i++) { // cin>>nd[i].left>>nd[i].right; char x,y; cin>>x>>y; if(x!='-') { nd[i].left=x-'0'; pre[nd[i].left]=i; } else nd[i].left=-1; if(y!='-') { nd[i].right=y-'0'; pre[nd[i].right]=i; } else nd[i].right=-1; } for(int i=0;i<n;i++) if(pre[i]==-1) { root=i; break; }///求顶点 顶点一定不会出现在某个点的左右节点中 bool temp=cengci(nd,root,last,n); if(temp) cout<<"YES "<<last<<endl; else cout<<"NO "<<root<<endl; return 0;}
三组案例未通过。。。
错误原因:未考虑输入两个及以上字符的情况,也就是当节点有10个及以上时,就会出错。
代码块如下
for(int i=0;i<n;i++) { // cin>>nd[i].left>>nd[i].right; char x[3],y[3]; cin>>x>>y; if(x[0]!='-') { sscanf(x,"%d",&nd[i].left); pre[nd[i].left]=i; } else nd[i].left=-1; if(y[0]!='-') { sscanf(y,"%d",&nd[i].right); pre[nd[i].right]=i; } else nd[i].right=-1; }
0 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)
- HTML学习笔记(十三)字符实体
- Sencha Touch 历史支持
- Mysql主键索引创建的实例
- Android Camera 使用小结
- 01-复杂度2 Maximum Subsequence Sum
- 1110. Complete Binary Tree (25)
- leetcode之Happy Number
- 随笔。。。。。。
- 面试中十四个可以向主考官提出的问题
- JVM垃圾回收之引用计数法
- 试试
- countingBits
- 栈、堆栈、堆、队列,它们之间的关系
- Java - Socket