题目描述:
试设计一个算法判断两个二叉树是否相似,所谓的两个二叉树相似即两个二叉树都是空树或者只有一个根节点;或者两个二叉树的右子树和左子树都相等。
算法思想:
本题可以采用递归的形式来求解:
若两棵树都是空树则相似;
若有一个是空树,而另一个不是空树,则两个必然不相似;
否则便递归比较它们的左右子树是否相似。
代码如下:
int similar(BiTree T1,BiTree T2){
int left,right;
if(T1==NULL && T2==NULL) return 1; //两树都是空树
if(T1==NULL || T2==NULL) return 0; //两树只有一个是空树
else{
left=similar(T1->lchild,T2->lchild);
right=similar(T1->rchild,T2->rchild);
return left && right;
}
}