1.4.3.2 RB Tree Insertion Implementation

完整的原始碼點我

這邊是insert的部分:

public void insert(int id, int data) {
        // Create a new node
        RbNode newNode = new RbNode(id, data, true);

        if (root == null) {
            root = newNode;
        } else {
            // Find the insert location
            RbNode current = root;
            RbNode parent = null;

            while (true) {
                parent = current;
                if (id < current.getId()) {
                    current = current.getLeft();
                    // If no left
                    if (current == null) {
                        // Modify related node's attribute
                        parent.setLeft(newNode);
                        newNode.setParent(parent);
                        break;
                    }
                } else {
                    current = current.getRight();
                    // If no right
                    if (current == null) {
                        // Modify related node's attribute
                        parent.setRight(newNode);
                        newNode.setParent(parent);
                        break;
                    }
                }
            }
        }

        balanceAfterInsert(newNode);
    }

這邊是平衡的部分:

這邊是左旋轉的部分:

這邊是右旋轉的部分:

Last updated

Was this helpful?