java中的相似树

java中的相似树,java,abstract-data-type,Java,Abstract Data Type,这是我必须做的。二叉搜索树ADT被扩展为包含一个布尔方法si m i l ar树,该方法接收对两个二叉树的引用,并确定树的形状是否相同。(节点不必包含相同的值,但每个节点必须具有相同数量的子节点。)我有代码来显示我所拥有的 public static <T> boolean similarTrees(BSTNode<T> a, BSTNode<T> b) { // check for reference equality and nulls

这是我必须做的。二叉搜索树ADT被扩展为包含一个布尔方法si m i l ar树,该方法接收对两个二叉树的引用,并确定树的形状是否相同。(节点不必包含相同的值,但每个节点必须具有相同数量的子节点。)我有代码来显示我所拥有的

public static <T> boolean  similarTrees(BSTNode<T> a, BSTNode<T> b) {
    // check for reference equality and nulls
    if (a == b) return true; // note this picks up case of two nulls
    if (a == null) return false;
    if (b == null) return false;

    // check for data inequality
    if (a.data != b.data) {
        if ((a.data == null) || (b.data == null)) return false;
        if (!(a.data.equals(b.data))) return false;
    }

    // recursively check branches
    if (!similarTrees(a.left, b.left)) return false;
    if (!similarTrees(a.right, b.right)) return false;

    // we've eliminated all possibilities for non-equality, so trees must be equal
    return true;
}
公共静态布尔相似树(BSTNode a,BSTNode b){
//检查引用相等性和空值
如果(a==b)返回true;//注意,这将选择两个null的情况
如果(a==null)返回false;
如果(b==null)返回false;
//检查数据不平等性
如果(a.数据!=b.数据){
if((a.data==null)| |(b.data==null))返回false;
如果(!(a.data.equals(b.data)),则返回false;
}
//递归检查分支
如果(!similarTrees(a.left,b.left))返回false;
如果(!similarTrees(a.right,b.right))返回false;
//我们已经排除了所有不平等的可能性,所以树必须是平等的
返回true;
}

这是正确的语法吗,因为它不起作用这段代码有什么问题?编译错误?这不是你所期望的吗?在后一种情况下,请告诉我们您的测试用例、您期望的内容以及发生的情况。绑定不匹配、数据无法旋转或它不是字段、.left和.right不可见。这些是我在更改为
getLeft()
getRight()
getData()
时遇到的错误,这些错误最有可能发生。不清楚您使用的是哪个库,所以不知道BSTNode类的实现