【发布时间】:2021-12-25 19:38:21
【问题描述】:
我正在尝试创建一个接受字符串的二叉树,但如果符号为 + 向左插入,则它使用“-”和“+”向左或向右移动,如果是 - 则向右插入。这是我正在尝试做的直观表示。
insert 方法现在应该只接受单词和一个符号,并基于该插入右侧或左侧
这是我的代码,但出现空指针错误。显然,我没有插入正确的顺序
public class BinaryTree {
private static Node root = null;
private static Node sign = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
BinaryTree bt = new BinaryTree();
bt.insert("to", "-");
bt.insert("the", "+");
bt.preorder();
}
private class Node {
String data;
String sign;
Node left;
Node right;
public Node(String w) {
data = w;
left = right = null;
}
// public Node(String w, String s) {
// data = w;
// sign = s;
// left = right = null;
//
// }
} // -----------------end of Node
private void insert(String val, String sign) {
root = insert(root, val, sign);
}
Node insert(Node r, String data, String passSign) {
if (r == null) {
return new Node(data);
}
if(r.sign.equals(passSign)) {
r.right = insert(r.right, data, passSign);
}
else if (r.sign.equals(passSign)){
r.left = insert(r.left, data, passSign);
}
return r;
}
public void preorder() {
preorder(root);
}
public void preorder(Node p) {
if (p != null) {
System.out.println(p.data);
preorder(p.left);
preorder(p.right);
}
}
}
【问题讨论】:
-
r.sign.equals(passSign)不符合你解释的逻辑。为什么sign应该是树或节点的属性?另外,您为什么认为第二次评估此表达式会导致不同的结果?
标签: java insert binary-tree