我正在制作一个ExpTree类,其中包括一种生成预输出并将其作为字符串返回的方法。到目前为止,我已经掌握了制作树的基本代码,但是我不确定如何编写预订方法。

我试图通过在main方法中创建一个ExpTree对象来访问树数据,然后在我的预订方法中在print语句中写入“ x.root”。但是,这将返回“ ExpTree.OperatorNode@7637f22”。理想情况下,我希望它会返回树中的某些值。

我是Java树的初学者,所以如果有人可以解释我在这里需要做的事情,那就太好了!

谢谢

编辑-如果不清楚,我要问的是我希望能够使用预排序遍历对提供给方法“ preorder”的Exp树进行排序。此方法的输出应为字符串。

问题是我不知道如何访问ExpTree的潜在部分,因此无法订购它们。

最佳答案

您的leafNode中不需要char expression。 leafNode可以只是整数,而OperatorNode具有leafNodes(整数)和表达式char。

public static void main(String[] args)
{

    ExpTree tree = new ExpTree('*', 1 , 2);
    System.out.println(tree.preOrder());

}

//Class Exp Tree creates Expression Tree with method to generate pre order output.

package ExpTree;


public class ExpTree {

    public Node root;

    public ExpTree ( char x, int y, int z){

        this.root = new OperatorNode(x, y, z);
    }

    public String preOrder (){

        return root.preOrder();
    }

}

abstract class Node {
    public abstract String preOrder();
}

class OperatorNode extends Node {

    char operator;
    Node left;
    Node right;

    public OperatorNode(char x, int y, int z){

        this.operator = x;
        this.left = new leafNode (y);
        this.right = new leafNode (z);
    }

    public String preOrder() {
        return this.operator + this.left.preOrder() + this.right.preOrder();
    }

}

class leafNode extends Node{
    int value;

    public leafNode(int x){
         this.value = x;
    }

    public String preOrder() {
        return Integer.toString(this.value);
    }
}

08-25 14:40