1110. Complete Binary Tree (25)

来源:互联网 发布:淘宝达人粉丝1000个 编辑:程序博客网 时间:2024/05/04 10:28

两个测试点过不去

大体思路就这样

#include<iostream>#include<queue>#include<vector>using namespace std;const int MAX = 30;struct node{int lchild;int rchild;}node[MAX];bool exist[MAX];int n , root;vector<int> level;void init(){for(int i=0;i<MAX;i++){exist[i]=false;}}void levelorder(int root){int p=root,flag=0;queue<int> q;q.push(p);while(!q.empty()){p=q.front();q.pop();level.push_back(p);if(flag==0){if(node[p].lchild!=-1) q.push(node[p].lchild);else flag=1;    if(node[p].rchild!=-1&&flag==0) q.push(node[p].rchild);    else flag=1;}}}int main(){init();cin>>n;for(int i=0;i<n;i++){char left,right;getchar();left=getchar();if(left!='-'){node[i].lchild=left-'0';exist[node[i].lchild]=true;}else node[i].lchild=-1;getchar();right=getchar();if(right!='-'){node[i].rchild=right-'0';exist[node[i].rchild]=true;}else node[i].rchild=-1;}for(int i=0;i<n;i++){if(exist[i]==false){root=i;break;}}levelorder(root);if(level.size()!=n){printf("NO %d\n",root);}else{printf("YES %d\n",level[n-1]);}return 0;} 


0 0
原创粉丝点击