二叉树T1和T2相似,指的是T1和T2都是空的二叉树或者都只有一个根结点;或T1的左子树和T2的左子树
是相似的并且T1的右子树和T2的右子树是相似的。
分析:采用递归的思想求解。若T1和T2都是空树,则相似;若有一个为空另一个不为空,则不相似;否则
递归地比较他们的左、右子树是否相似。
算法实现如下:
public boolean similar(TreeNode t1, TreeNode t2)
{
// 采用递归算法判断两个二叉树是否相似
boolean leftS = false, rightS = false;
if (t1 == null && t2 == null) // 两树皆空
return true;
else if (t1 == null || t2 == null) // 只有一个树为空
return false;
else // 递归地进行判断
{
leftS = similar(t1.left, t2.left);
rightS = similar(t1.right, t2.right);
return leftS && rightS;
}
}