我必须使用二叉树制作这个算术表达式的模型。表达式 a + b * c-b
这是我在Java中的树模型
enum NodeType { NUMBER, OPERATOR } // Possible kinds of node.
class ExpNode { // A node in an expression tree.
NodeType kind; // Which type of node is this?
double number; // The value in a node of type NUMBER.
char op; // The operator in a node of type OPERATOR.
ExpNode left; // Pointers to subtrees,
ExpNode right; // in a node of type OPERATOR.
ExpNode( double val ) {
// Constructor for making a node of type NUMBER.
kind = NodeType.NUMBER;
number = val;
}
ExpNode( char op, ExpNode left, ExpNode right ) {
// Constructor for making a node of type OPERATOR.
kind = NodeType.OPERATOR;
this.op = op;
this.left = left;
this.right = right;
}
}
我不知道如何实现插入方法来添加节点。之后,我将不得不在控制台中打印树并更改节点以使此表达式(a + b)* c-b 请帮助我,我在Java中不够强大
答案 0 :(得分:1)
首先,您需要跟踪root
。
ExpNode root = new ExpNode(op, null, null);
要插入,您需要找到指向left
的{{1}}或right
的节点。然后创建一个新节点并安排指针。
让您入门的示例:
null
这段代码将开始使用。玩它,直到你理解它,然后你可以调整它来解决你的功课。你应该注意到树的左侧有一些特别的骚扰。