我正在创建一个ExpTree类,它包含一个生成预订输出并将其作为字符串返回的方法。到目前为止,我有基本的代码来制作树,但我不知道如何写入预订方法。
我试图通过在main方法中创建一个ExpTree对象来访问树数据,然后在我的preorder方法中在print语句中编写'x.root'。然而,这将返回'ExpTree.OperatorNode@7637f22'。理想情况下,我希望它会返回树中的一些值。
我是java中的树的初学者,所以如果有人可以解释我在这里需要做的事情会很棒!
由于
编辑 - 如果不清楚,我要问的是我希望能够使用preorder遍历来命令提供给方法'preorder'的Exp树。此方法的输出应为字符串。
问题是我不知道如何访问ExpTree的潜在部分,所以我无法订购它们。
答案 0 :(得分:0)
您的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);
}
}