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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 战地1停止工作怎么办 大写锁定shift解除怎么办 游戏突然掉帧怎么办 oppo应用商店打不开怎么办 ps4战地1校园网怎么办 战地4延迟高怎么办 红米手机打不开怎么办 台式电脑网页打不开怎么办 电脑网页很多都打不开怎么办 qq发送不了位置怎么办 qq无法找到入口怎么办 玩游戏总是掉怎么办 ipad所有按键失灵怎么办 手机启动器停止运行怎么办 安卓版泰拉瑞亚联机失去连接怎么办 吃鸡安装不了怎么办 obb文件丢失了怎么办 dnf登录闪退怎么办 泰拉瑞亚地图找不到备份怎么办 服务器没远程管理卡怎么办 tplink上不了网怎么办 键盘端口坏了怎么办 小米路由dns错误怎么办 电脑内存性能低怎么办 nas硬盘坏了怎么办 360安装环境异常怎么办 连接不上服务器怎么办 路由器被绑定mac怎么办 mac地址绑定失败怎么办 触摸屏忘了密码怎么办? 小区高层水压低怎么办 高层楼房水压不够怎么办 热水器温度太高怎么办 热水器出热水小怎么办 天然气热水器水压不够怎么办 热水器水变小了怎么办 液压齿轮泵没力怎么办 gps总是浮点解怎么办 电源要做到稳压怎么办 变压器输出电压低怎么办 变压器输出电压高怎么办