Java 对称树中与遍历有关的问题
我想解决一个问题,也就是“对称树” 我提供了正确的解决方案,但是我想知道为什么这段代码不起作用 我认为ArrayList可以包含null值,并且可以在方法“equals”中比较null值 任何人都能看出哪里错了?(我知道这个算法不是有效的方法)Java 对称树中与遍历有关的问题,java,algorithm,data-structures,Java,Algorithm,Data Structures,我想解决一个问题,也就是“对称树” 我提供了正确的解决方案,但是我想知道为什么这段代码不起作用 我认为ArrayList可以包含null值,并且可以在方法“equals”中比较null值 任何人都能看出哪里错了?(我知道这个算法不是有效的方法) public boolean是对称的(树节点根){ if(root==null){ 返回true; } List list1=新的ArrayList(); List list2=新的ArrayList(); list1=isMirror1(根,list1
public boolean是对称的(树节点根){
if(root==null){
返回true;
}
List list1=新的ArrayList();
List list2=新的ArrayList();
list1=isMirror1(根,list1);
list2=isMirror2(根,list2);
对于(int i=0;i
list1.size()
和list2.get(i)
可以引发NullPointerException
也许您可以在循环之前检查类似的内容:
if ( list1==null || list2==null) {
if ( list1==null && list2==null ) return true;
return false;
}
for....
代码是为了显示主要思想,你可以简化它
编辑
首先,您可以实现自己的equals方法并安全地使用它:
public boolean equalsWithNulls(TreeNode a, TreeNode b) {
if (a==b) return true;
if ((a==null) || (b==null)) return false;
return a.equals(b);
}
我是否可以存储空值?我想我需要存储null值,以确定它的对称树是否可以在列表中存储null值。但在比较两个节点时,需要进行不同的检查。我添加了equalsWithNulls方法,您可以使用它。
public boolean equalsWithNulls(TreeNode a, TreeNode b) {
if (a==b) return true;
if ((a==null) || (b==null)) return false;
return a.equals(b);
}