平衡二叉树的左平衡方法
static void LeftBalance(ref Node node)
{
    Node L, lr;
    L = node.cLeft;
    switch (L.bf)
    {
        case EH:
            L.bf = RH;
            node.bf = LH;
            R_Rotate(ref node);
            break;
        case LH:
            L.bf = node.bf = EH;
            R_Rotate(ref node);
            break;
        case RH:
            lr = L.cRight;
            switch (lr.bf)
            {
                case EH:
                    L.bf = L.bf = EH;
                    break;
                case RH:
                    node.bf = EH;
                    L.bf = LH;
                    break;
                case LH:
                    L.bf = EH;
                    node.bf = RH;
                    break;
                default:
                    break;
            }
            lr.bf = EH;
            L_Rotate(ref node.cLeft);
            R_Rotate(ref node);
            break;
    }
}


解析的话 参考平衡二叉树的右平衡方法


首页 我的博客
粤ICP备17103704号