题目是:判断两颗二叉树是否相等。
以下p1是我的运行结果,p2是我要判断的两颗二叉树。为何没有运行结果呢?请指教谢谢不胜感激
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROW 0
#define OVERFLOW -1
int flag=1; //flag判断两棵树是否相等
typedef struct BiTNode
{char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void xinsert(BiTree &T) //先序 输入
{char ch;
scanf("%c",&ch);
if (ch=='#') //#表示空
T=NULL;
else
{T=new BiTNode;
T->data=ch;
xinsert(T->lchild);
xinsert(T->rchild);
}
}
int Judge(BiTree &T1,BiTree &T2) //第二题
{
if(T1&&T2) //T1,T2不为空。
{if(T1->data!=T2->data||flag==0) //若字符不相等,flag=0
{flag=0; //只要有一个判断不相等的情况,后面无论怎么判断,flag都为0
return 0;
}
else
{
Judge(T1->lchild,T2->lchild); //若字符相等,则递归判断它的左右子树是否相等。
Judge (T1->rchild,T2->rchild);
return OK;
}
}
}
int main()
{BiTree T;
BiTree T2;
printf("请先序输入T二叉树元素,并以'#'表示该节点为空\n");//先序输入第一棵二叉树
xinsert(T);
printf("\n请先序输入第T2二叉树元素,并以'#'表示该节点为空\n");//先序输入第二棵二叉树
xinsert(T2);
int x;
Judge(T,T2); //调用函数
if (flag==0) x=0;//若flag==0,则x=0
else x=1; //否则x=1
printf("\n第二题:判断T与T2是否相等?(0为否,1为是)\n%d\n",x);//x为0就明不相等,x为1说明相等
return 0;
}