详细的代码可见github:
https://github.com/AbitGo/myClassWork/tree/master/workspace_ds
两种递归式方法,原理:首先对比根节点,再依次对比左右结点。
详细代码实现:
public boolean isEqual(BiTreeNode t1, BiTreeNode t2) {
if (t1 == null && t2 == null) {
return true;
}
//当两个节点都不为空时
if (t1 != null && t2 != null) {
if (t1.data.equals(t2.data)) {
//左子树是否相等
if (isEqual(t1.lchild, t2.lchild)) {
//右子树是否相等
if (isEqual(t1.rchild, t2.rchild)) {
return true;
}
}
}
}
//当剩下只有一个不为空,则返回false
return false;
}
public boolean isEqual1(BiTreeNode t1, BiTreeNode t2) {
if (t1 == null && t2 == null) {
return true;
}
//当两个节点都不为空时
else if (t1 != null && t2 != null) {
//必须满足三个条件
//1。两个结点的值相等
//2。左子树相等
//3。右子树相等
return (t1.data.equals(t2.data) && (isEqual1(t1.lchild, t2.lchild)) && (isEqual1(t1.rchild, t2.rchild)));
}
//当剩下只有一个不为空,则返回false
return false;
}