#include
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BitNode,*BitTree;
void CreatBiTree(BitTree *bt)//用擴充套件先序遍歷序列建立二叉樹,如果是.當前樹根置為空,否則申請一個新節點//
char ch;
ch=getchar();
if(ch==".")*bt=NULL;
else
*bt=(BitTree)malloc(sizeof(BitNode));
(*bt)->data=ch;
CreatBiTree(&((*bt)->LChild));
CreatBiTree(&((*bt)->RChild));
}
int like(BitTree b1,BitTree b2)/*判斷兩個樹是否相似*/
int like1,like2;
if(b1==NULL&&b2==NULL)
return 1; /*兩個為空子樹、相似*/
else if(b1==NULL||b2==NULL)
return 0; /*兩個中某一個為空子樹、不相似*/
like1=like(b1->LChild,b2->LChild);
like2=like(b1->RChild,b2->RChild);
return(like1&&like2);
void PrintTree(BitTree Boot,int nLayer) //按豎向樹狀列印的二叉樹 //
int i;
if(Boot==NULL) return;
PrintTree(Boot->RChild,nLayer+1);
for(i=0;i
#include
#include
#include
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BitNode,*BitTree;
void CreatBiTree(BitTree *bt)//用擴充套件先序遍歷序列建立二叉樹,如果是.當前樹根置為空,否則申請一個新節點//
{
char ch;
ch=getchar();
if(ch==".")*bt=NULL;
else
{
*bt=(BitTree)malloc(sizeof(BitNode));
(*bt)->data=ch;
CreatBiTree(&((*bt)->LChild));
CreatBiTree(&((*bt)->RChild));
}
}
int like(BitTree b1,BitTree b2)/*判斷兩個樹是否相似*/
{
int like1,like2;
if(b1==NULL&&b2==NULL)
return 1; /*兩個為空子樹、相似*/
else if(b1==NULL||b2==NULL)
return 0; /*兩個中某一個為空子樹、不相似*/
else
{
like1=like(b1->LChild,b2->LChild);
like2=like(b1->RChild,b2->RChild);
return(like1&&like2);
}
}
void PrintTree(BitTree Boot,int nLayer) //按豎向樹狀列印的二叉樹 //
{
int i;
if(Boot==NULL) return;
PrintTree(Boot->RChild,nLayer+1);
for(i=0;i