问题
问答题
试编写算法判断两棵二叉树是否等价。若二叉树T1和T2等价,则T1和T2都是空的二叉树,或T1和T2的根结点的值相同,并且T1的左子树与T2的左子树是等价的,T1的右子树与T2的右子树是等价的。
答案
参考答案:
本题采用递归方法,步骤如下:
(A)若TA和TB都是空树则等价。
(B)若TA和TB有一个为空树,另一个是非空树,则不等价。
(C)若TA和TB两个都是非空树且它们的根的值相等,比较它们的左、右子树。
int same_tree(BinTree TA, TB)
{ if((TA==NULL)&&(TB==NULL))
return(A);
else if((TA==NULL)||(TB==NULL))
return(0);
else if(TA->data==TB->data)
return(same_tree(TA->lchild, TB->lchild)
&&same_tree(TA->rchild, TB->rchild));
}