false
==
操作员面对两个参考。
==
操作员面对两个变量的
核。因此,您实际上在代码中所做的是检查第一个参考所包含的地址是否等于第二个参考文献所包含的地址。但是,由于两个参考都指向不同的对象,因此要进行不同的内存地址,因此对抗只能返回false
。
如果您想检查两个引用是否指向表示相同内容的两个对象,则需要使用equals()
方法。为了使用equals()
,您首先需要在BinaryTree
类中覆盖它,并提供
BinaryTree
对象之间平等的定义。还要注意,该文档也建议在覆盖hashcode()
时覆盖
equals()
方法,以便两种方法都与HashCode方法的general合同一致,该方法指出,equeAge对象必须具有相等的哈希码。但是,这只是一个建议,在您的情况下并不是严格必要的。
废话说
BinaryTree
为
equals()
提供了适当的定义,您的
traversal()
方法看起来更像是这样:
public static boolean symmetricTree(BinaryTree<Integer> root){
System.out.println(traversal(root.left, true));
System.out.println(traversal(root.right, false));
return traversal(root.left, true).equals(traversal(root.right, false));
}
return traversal(root.left, true) == traversal(root.right, false);
这听起来对我来说是错误的,在Java中,有一种方法实际上检查数组是否平均(以相同的顺序具有相同的元素)。您提出的方式比较了参考文献:
equals