1. 程式人生 > >紅黑樹複雜度證明

紅黑樹複雜度證明

    證明:紅黑樹的複雜度為O(logn),其中n為節點個數。
    
    只需證定理:一棵有n個節點的紅黑樹高度h至多為2log(n+1)

            h =< 2log(n+1)

    只需證:高度為h的紅黑樹,包含的節點的數至少為2^(h/2)-1
    
            n => 2^(h/2)-1
    
    根據紅黑樹的性質,如果X為根節點,那麼bh(X) = > h/2,上式可轉化為:

            n => 2^(bh(X))-1 => 2^(h/2)-1

    同時有:樹總節點的個數大於黑節點的個數

            n => n(b)

    那麼我們只需證:
        
            n(b) => 2^(bh(X))-1

    即證明:黑高度為bh(X)的紅黑樹,包含至少為2^(bh(X))-1的黑節點,X為根節點


某一節點x為根的紅黑樹,黑高度bh(X),至少包含2^[bh(X)] - 1個黑節點;
歸納假設證明:
    歸納奠基:當高度bh(X)=0時,黑節點數n(b) = 0 = 2^(bh(X))-1 = 2^(0)-1,原命題成立;
    歸納假設:當高度bh(X)=k時,假設該樹至少有為2^(bh(X))-1 = 2^(k)-1個黑節點;
    歸納遞推:當高度bh(X)=k+1時,根節點的兩棵子樹的高度肯定為k(紅黑樹性質4),則兩棵子樹上的黑節點個數為2*(2^(bh(X))-1) = 2^(k+1)-2(歸納假設),那麼該樹共有黑節點2^(k+1)-2+1(根節點) = 2^(k+1)-1個黑節點,原命題成立。