如何在不丢失子节点的情况下替换现有节点中的信息?

时间:2019-05-17 09:19:12

标签: java insert binary-search-tree

因此,我实现了二进制搜索树,并且管理了一种有效的插入方法。所有节点都包含有关课程代码,课程名称和课程学分的信息。 假设我要插入一个具有相同键(课程代码)但课程积分不同的新节点,那么它不会累加。看来我的树失去了我更改的节点的子代。

在键相等的情况下,我尝试写“ 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;
    }
}

1 个答案:

答案 0 :(得分:0)

只需替换当前节点的courseNamecourseCredits

...
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; 
    }
    ...