我正在制作一个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);
}
}