求助!为何我的WA提示全是第一行过短!
  • 板块P1305 新二叉树
  • 楼主kevian
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/24 22:01
  • 上次更新2024/11/25 11:29:11
查看原帖
求助!为何我的WA提示全是第一行过短!
1205097
kevian楼主2024/11/24 22:01
#include<stdio.h>
#include<stdlib.h>
typedef struct tree{
	char c;
	struct tree *lchild;
	struct tree *rchild;
}BTreeNode, *BTree;
BTree InitTree(char c){
	BTree b=(BTree)malloc(sizeof(BTreeNode));
	if(!b){
	free(b);
	return NULL;
    }
	b->lchild=NULL;
	b->rchild=NULL;
	b->c=c;
	return b;
}
BTree proorderTree(BTree b,char c){
  	if(!b)
	return NULL;
	if(b->c==c)
	return b;
	if(proorderTree(b->lchild,c))
	return proorderTree(b->lchild,c);
	if(proorderTree(b->rchild,c))
	return proorderTree(b->rchild,c);
	return NULL;
}
void ProorderTree(BTree b){
	if(!b)
	return ;
	printf("%c",b->c);
	if(b->lchild)
	ProorderTree(b->lchild);
	if(b->rchild)
	ProorderTree(b->rchild);
}
void ConstructTree(BTree b){
	char c;
	scanf("%c",&c);
	if(b->lchild==NULL&&b->rchild==NULL){
	b->c=c;
	scanf("%c",&c);
	if(c=='*')
	b->lchild=NULL;
	else
	b->lchild=InitTree(c);
	scanf("%c",&c);
	if(c=='*')
	b->rchild=NULL;
	else
	b->rchild=InitTree(c);
    }
    else{
    	BTree t=proorderTree(b,c);
    	if(!t)
    	return ;
        scanf("%c",&c);
	    if(c=='*')
	       t->lchild=NULL;
	    else
	       t->lchild=InitTree(c);
	       scanf("%c",&c);
	    if(c=='*')
	       t->rchild=NULL;
	    else
	       t->rchild=InitTree(c);
    }
}
int main(){
	int num;
	scanf("%d",&num);
	int i;
	BTree b=(BTree)malloc(sizeof(BTreeNode));
	if(!b)
	return 0;
	b->lchild=NULL;b->rchild=NULL;
	getchar();
	for(i=0;i<num;i++){
		ConstructTree(b);
		getchar();
	}
	ProorderTree(b);
	return 0;
}
2024/11/24 22:01
加载中...