May*_*rni 3 java recursion stack
我已经制作了自己的Tree类,并且我试图检查两棵树是否相同.但这里的问题是我正在使用这个电话:
Tree myTree = new Tree();
Tree mySecondTree = new Tree();
myTree.isIdentical(myTree, mySecondTree);
Run Code Online (Sandbox Code Playgroud)
以这种方式传递它有点奇怪,我想通过这种方式传递它:
myTree.isIdentical(mySecondTree);
Run Code Online (Sandbox Code Playgroud)
isIdentical function :
class Tree<T>{
T data;
Tree left;
Tree right;
Tree(T data){
this.data = data;
}
public boolean isIdentical(Tree t1, Tree t2){
if(t1 == t2)
return true;
if(t1==null || t2==null)
return false;
return (
(t1.data == t2.data) &&
(isIdentical(t1.left, t2.left)) &&
(isIdentical(t1.right, t2.right))
);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用Stack,但我有点坚持这个
因为你想以这种方式执行它
myTree.isIdentical(mySecondTree);
Run Code Online (Sandbox Code Playgroud)
你可以做到这一点
public boolean isIdentical(Tree t2){
Tree t1 = this;
return isIdentical(t1, t2);
}
private boolean isIdentical(Tree t1, Tree t2){
if(t1 == t2)
return true;
if(t1==null || t2==null)
return false;
return (
(t1.data == t2.data) &&
(isIdentical(t1.left, t2.left)) &&
(isIdentical(t1.right, t2.right))
);
}
Run Code Online (Sandbox Code Playgroud)