Java中二叉树的镜像功能



问题:设计一个计算二进制镜像的镜像方法树。

我的代码有什么问题?这对我来说是有意义的,但是唯一通过的例子是我的Leaf唯一的例子:

abstract class ABT {
    public abstract ABT mirror(); 
    }
class Leaf extends ABT { 
    int val; 
    Leaf(int val){ 
        this.val = val; 
    }
public ABT mirror() { 
    return this; 
}
}
class Node extends ABT { 
    int data; 
    ABT left; 
    ABT right; 
    Node(int data, ABT left, ABT right) { 
        this.data = data; 
        this.left = left; 
        this.right = right; 
    }
public ABT mirror() { 
    return new Node(this.data, this.right.mirror(), this.left.mirror());
}

}

为什么不通过?我添加了一些测试方法,它似乎工作

public class TreeTest {
    public static void main(String[] args){
        new TreeTest();
    }
    TreeTest(){
        Leaf one = new Leaf(1);
        Leaf two = new Leaf(2);
        Leaf three = new Leaf(3);
        Node node23 = new Node(23,two,three);
        Node root = new Node(0,one,node23);

        System.out.println(one+"<->"+one.mirror());
        System.out.println(root+"<->"+root.mirror());
    }
    abstract class ABT {
        public abstract ABT mirror();
    }
    class Leaf extends ABT {
        int val;
        Leaf(int val) {
            this.val = val;
        }
        public ABT mirror() {
            return this;
        }
        public String toString(){
            return Integer.toString(val);
        }
    }
    class Node extends ABT {
        int data;
        ABT left;
        ABT right;
        Node(int data, ABT left, ABT right) {
            this.data = data;
            this.left = left;
            this.right = right;
        }
        public String toString(){
            StringBuilder sb = new StringBuilder();
            sb.append(data).append(",{").append(left.toString()).append("},{")
                    .append(right.toString()).append("}");
            return sb.toString();
        }
        public ABT mirror() {
            return new Node(this.data, this.right.mirror(), this.left.mirror());
        }
    }
}

输出为:

1 & lt; 1 ->

0,{1},{23日,{2},{3}}& lt; -> 0,{23日,{3},{2}},{1}

不是镜像的吗?

最新更新