public Node redBlackTreeInsert(Node root, Node z)
    {
        /**
         * 会违反 red node 的左右子树节点的颜色必须是black
         * 那么就针对这个进行调整
         */
        //z节点颜色为red
        z.setColor(RedBlack.RED.getValue());
        /**
         * 还是按照二叉检索树进行节点插入
         */
        Node y = null;
        Node x = root;
        //找插入节点的父节点
        while (x != null)
        {
            y = x;
            if (x.getKey() > z.getKey())
            {
                x = x.getLeft();
            }
            else
            {
                x = x.getRight();
            }
        }
        z.setParent(y);
        if (y == null)
        {
            root = z;
        }
        else
        {
            if (z.getKey() > y.getKey())
            {
                y.setRight(z);
            }
            else
            {
                y.setLeft(z);
            }
        }
        //设置根节点颜色为black
        root.setColor(RedBlack.BLACK.getValue());
        
        /**
         * 调整红黑树，因为可能违反第四条属性：
         * red node 的左右子树节点的颜色必须是black
         */
        
        redBlackTreeInsertFixUp(z);
        return root;
    }