所以我实现了一个二叉搜索树,并且管理了一个有效的插入方法。所有节点都包含有关类(class)的信息,包括类(class)代码、类(class)名称和类(class)学分。 假设我想插入一个具有相同 key (类(class)代码)但不同类(class)学分的新节点,那么它不会相加。看来我的树失去了我更改的节点的子节点。
在键相等的情况下,我尝试写“节点”而不是“根”,但它会像我之前所说的那样丢失子节点。
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;
}
}
最佳答案
只需替换当前节点的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;
}
...
关于java - 如何替换现有节点中的信息而不丢失其子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56183320/