我在TreeUtils类中有一个方法,用于检查两个二叉搜索树之间结构的simalarity
if(root1 == null&& root2 == null)
{
return true;
}
if(root1 == null && root2!=null){
return false;
}
if(root1 != null && root2 == null)
{
return false;
}
boolean leftRecurse = similar(root1.getLeft(), root2.getLeft());
boolean rightRecurse = similar(root1.getRight(), root2.getRight());
return leftRecurse && rightRecurse;
然而,当我对此文件运行单元测试时,它会失败。但是如果我从main方法调用这个方法,它就可以了。它不是包或范围问题,因为类似的方法在main方法中起作用。我认为它与
有关 public BinaryTreeNode getLeft() {
assert(this.hasLeft());
return this.left;
}
也许是因为现在这是一个单元测试,它正在调用断言? 我应该如何修改我的类似方法以避免这种情况。
这是我的单元测试
public void testSimilar() {
System.out.println("Test similarity");
SimpleBST tree = new SimpleBST();
tree.insert(1);
tree.insert(2);
SimpleBST tree2 = new SimpleBST();
tree2.insert(1);
tree2.insert(3);
assertEquals(true, tree.similar(tree2));
}
感谢。
答案 0 :(得分:1)
假设您使用-ea参数启用了断言,如果此没有左子,则程序将抛出AssertionError。但是通过你的设置,递归地你想要评估左右孩子,即使他们是空的。简单地删除断言将起作用。