public void redBlackTreeDelete(Node z)
    {
        //y是要真正删除的节点，y肯定是一个只有一个子树或者没有子树的节点
        Node y = null;
        if (z.getLeft() == null || z.getRight() == null)
        {
            //前三种节点
            y = z;
        }
        else
        {
            //右树的最小节点，最左节点
            y = treeSuccessor(z);
        }
        //x是y节点后继节点，需要重新指定父节点的
        Node x = null;
        if (y.getLeft() != null)
        {
            x = y.getLeft();
        }
        else
        {
            x = y.getRight();
        }
        if (x != null)
        {
            x.setParent(y.getParent());
        }
        if (y.getParent() == null)
        {
            //y是根节点
            //x此时是根节点，不需要做处理
        }
        else
        {
            Node parent = y.getParent();
            if (y == parent.getLeft())
            {
                parent.setLeft(x);
            }
            else
            {
                parent.setRight(x);
            }
        }
        if (y != z)
        {
            /**
             * has right and left subtree
             * y point to min of right subtree
             * 只需要将此时y的值赋予到z上
             */
            
            z.setKey(y.getKey());
            
        }
        
        if (y.getColor().equals(RedBlack.BLACK.getValue()))
        {
            //如果删除的节点是黑色的，需要对红黑树进行重构
            /**
             * 违背的属性:
             * 1.red node 下只能是黑色子节点
             * 2.black-height不同了
             * 四种场景需要处理
             */
            
        }
    }