求助,为什么过不了编译
查看原帖
求助,为什么过不了编译
591677
Mi_mo楼主2022/8/11 13:07
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int num;
typedef struct node{
	struct node *lchild;
	struct node *rchild;
	char data;
}*tree,Tree;
tree T;
char str[2000];
int CiFang(int a,int b)
{
	int sum=1,n=1;
	for(n=1;n<=b;n++)
	{
		sum=a*sum;                 //a的b次方 
	}	
	return sum;
}
void TREE(int begin,int end,tree &T)
{
	if(begin>end)
		return;
	if(begin==end)
	{
		T= (tree)malloc(sizeof(Tree));
		if(str[begin]=='1')
			T->data='I';
		else
			T->data='B';
		T->lchild=NULL;
		T->rchild=NULL;
		return ;
	}
	else
	{
		int a=0;int b=0;
		for(int i=begin;i<=end;i++)
		{
			if(str[i]=='1')
				a++;
			if(str[i]=='0')
				b++;
			if(a>0&&b>0)
				break;
		}
		T= (tree)malloc(sizeof(Tree));
		if(a>0&&b>0)
			T->data='F';
		if(a==0&&b>0)
			T->data='B';
		if(a>0&&b==0)
			T->data='I';
		TREE(begin,(begin+end)/2,T->lchild);
		TREE((begin+end)/2+1,end,T->rchild);
	}
}
void PostOrderTraverse(tree T)
//后序遍历二叉树T
{
    if(T==NULL)
		return;
    if (T)
    {
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        printf("%c",T->data);
    }
}
int main()
{
	scanf("%d",&num);
	int len=CiFang(2,num);
	scanf("%s",str);
	for(int i=len;i>=0;i--)
		str[i+1]=str[i];
	TREE(1,len,T);
	PostOrderTraverse(T);
}
2022/8/11 13:07
加载中...