因此,我实现了二进制搜索树,并且管理了一种有效的插入方法。所有节点都包含有关课程代码,课程名称和课程学分的信息。 假设我要插入一个具有相同键(课程代码)但课程积分不同的新节点,那么它不会累加。看来我的树失去了我更改的节点的子代。
在键相等的情况下,我尝试写“ node”而不是“ root”,但是像我之前说的那样,它失去了孩子。
public void insert(String courseCode, String courseName, double courseCredits) {
BSTNode node = new BSTNode(courseCode, courseName, courseCredits);
root = insert(root, node);
}
private BSTNode insert(BSTNode root, BSTNode node) {
if (root==null) {
return node;
} else {
String currentKey = root.getCourseCode();
BSTNode left = root.getLeftChild();
BSTNode right = root.getRightChild();
if (node.getCourseCode().compareTo(currentKey) < 0) {
left = insert(left, node);
} else if (node.getCourseCode().compareTo(currentKey) > 0) {
right = insert(right, node); //Ändrade "left" till "right" i parentesen.
} else {
return root;
}
root.setChildren(left, right);
return root;
}
}
答案 0 :(得分:0)
只需替换当前节点的courseName
和courseCredits
:
...
if (root==null) {
root.setCourseName(node.getCourseName());
root.setCourseCredits(node.getCourceCredits());
return node;
} else {
...
} else {
root.setCourseName(node.getCourseName());
root.setCourseCredits(node.getCourceCredits());
return root;
}
...