private Node insert(int key) {
        Node uusi = new Node(key, false);
        uusi.height = 0;
        // Jos puussa ei ole mitään, laitetaan uusi solmu juureksi
        if (root == null) {
            root = uusi;
            return uusi;
        }

        Node current = root;
        Node parent = current;
        while (current != null) {
            parent = current;
            if (current.key == key) {
                return null;
            }
            if (key < current.key) {
                current = current.left;
            } else {
                current = current.right;
            }
        }
        uusi.parent = parent;

        // Asetetaan vanhemman lapseksi uusi solmu
        if (uusi.key < parent.key) {
            parent.left = uusi;
            if (parent.right == null) {
                parent.height = 1;
            }
        } else {
            parent.right = uusi;
            if (parent.left == null) {
                parent.height = 1;
            }
        }
        return uusi;
    }