如果是有多余的节点的(如:ab000c0),程序直接忽略了运行,为什么?

如:input:a0; output:invalid! 
input:a00;output:valid!
input:ab000;output:valid!
input:ab000c0;output:invalid!
(0是二叉树的虚节点,用前序来创建排列输入的字符串)

以下是我用的部分代码,但如果输入不合法的,如果是遗漏虚节点的(如:a0)运行时候就没反应,如果是有多余的节点的(如:ab000c0),程序直接忽略了运行。
typedef struct Binnode{
char data;
struct Binnode *lchild;
struct Binnode *rchild;
}Binnode,*Bintree ;

{
char ch;
if((ch=getchar())=='0')
{
*root=NULL;

}

else
{  
*root=(Bintree)malloc(sizeof(Binnode));
(*root)->data=ch;
Creat_Bintree(&(*root)->lchild);
Creat_Bintree(&(*root)->rchild);
}
}

料青山看我应如是
浏览 111回答 1
1回答

胡子哥哥

设置一个char a[]来保存输入的Input然后遍历数组a[],直到strlen根据a[]里面的字符进行判断.如果第一个是0,则检测是否后面有不是0的字符,如果有,就是invalid如果第一个不是0,检测第二个,如果第二个为0,检测第三个,如果第三个不为0,输出invalid如果第一个不是0,检测第二个,如果第二个不为0,检测第三个等等,不断循环
打开App,查看更多内容
随时随地看视频慕课网APP