问题 问答题

试编写算法判断两棵二叉树是否等价。若二叉树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));

}

单项选择题
问答题