锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久免费视频6,久久精品国产免费一区,久久亚洲天堂http://m.shnenglu.com/kyee/category/16949.html紼嬪簭鍛樺簲璇ヨ剼韙忓疄鍦幫紝鍒囧繉蹇?jī)嬲Q姘旂嚗銆?/description>zh-cnSun, 22 May 2011 03:09:18 GMTSun, 22 May 2011 03:09:18 GMT60鍏充簬騫寵 浜屽弶鏍?AVL tree)鏃嬭漿鍚庡鉤琛℃爣蹇楄皟鏁寸殑璁$畻鍏紡http://m.shnenglu.com/kyee/articles/146903.htmlKyee YeKyee YeSun, 22 May 2011 02:44:00 GMThttp://m.shnenglu.com/kyee/articles/146903.htmlhttp://m.shnenglu.com/kyee/comments/146903.htmlhttp://m.shnenglu.com/kyee/articles/146903.html#Feedback0http://m.shnenglu.com/kyee/comments/commentRss/146903.htmlhttp://m.shnenglu.com/kyee/services/trackbacks/146903.html--------------------------------------------------------------------------------
鏍囬: 鍏充簬騫寵 浜屽弶鏍?AVL tree)鏃嬭漿鍚庡鉤琛℃爣蹇楄皟鏁寸殑璁$畻鍏紡
浣滆? 鍙墮铏?/span>
寤虹珛: 2009.10.18
鍙樻洿: 2010.06.22
--------------------------------------------------------------------------------

1. 寮曡█
      騫寵 浜屽弶鏍?wèi)鐨勻q寵 鏍囧織璁$畻鍙互璇存槸鏈綆鍗曠殑, 涔熷彲浠ヨ鏄疉VL鏍?wèi)涓渶闅劇殑銆傚鉤琛℃爣
   蹇楄綆楁柟娉曟湁涓ょ錛?/span>
      a. Balance = Height(Left) - Height(Right);
      b. Balance = Height(Right) - Height(Left);

      鍏朵腑 Height 涓虹粨鐐圭殑瀛愭爲(wèi)楂樺害(>= 0), 綆楁硶綆鍗曞氨鏄鍙宸﹀彸瀛愭爲(wèi)楂樺害鐩稿噺鍗沖彲,
   浣嗚繍琛屾晥鐜囦笉楂樸傚綋緇撶偣鏁頒笂鍗冧互涓婃椂, 棰戠箒澧炲垹緇撶偣甯︽潵寮閿浼?xì)鐩稿綋鍙? 姝e洜濡傛,
   鏈漢閫氳繃鎺ㄧ悊寰楀埌鐨勮綆楀叕寮忓氨闈炲父閲嶈浜?jiǎn)銆?/span>


2. 鍋囪
   a. 緇撶偣瀹氫箟
      typedef struct TAVLNode
      {
         void*       Item;          // 瀛樻斁欏?/span>
         TAVLNode*   Left;          // 宸﹀瓙緇撶偣
         TAVLNode*   Right;         // 鍙沖瓙緇撶偣
         TAVLNode*   Parent;        // 鐖剁粨鐐?/span>
         char        Balance;       // 騫寵 鏍囧織: [-1..1]
      } *PAVLNode;

   b. 騫寵 澧為噺 D 鍜?D', D 涓哄乏瀛愭爲(wèi)澧為噺, D' 涓哄彸瀛愭爲(wèi)澧為噺, 涓?D = -D', D 鍙互瀹氫箟
      涓?1 鎴?-1, 鍏朵腑:
      1). D = 1  鍒欒〃紺哄鉤琛℃爣蹇楄綆楁柟娉曚負(fù): Height(Left) - Height(Right)
      2). D = -1 鍒欒〃紺哄鉤琛℃爣蹇楄綆楁柟娉曚負(fù): Height(Right) - Height(Left)

   c. 緇撶偣楂樺害鐨勫嚱鏁?H, 鍒欑粨鐐?n 鏈?
      H(n) = M(H(n.Left), H(n.Right)) + D, 鍚屾椂 H(NULL) = 0
      鍏朵腑, M(H(n.Left), H(n.Right) 鍑芥暟鎻忚堪濡備笅:
      1). |H(n.Left)| >= |H(n.Right)| 鍒欏間負(fù): H(n.Left)
      2). |H(n.Left)| <  |H(n.Right)| 鍒欏間負(fù): H(n.Right)

   d. 緇撶偣騫寵 鏍囧織鐨勫嚱鏁?B, 鍒欑粨鐐?n 鏈?
      B(n) = n.Balance = H(n.Left) - H(n.Right)


3. 鏃嬭漿鏂瑰紡(Left-Left)
   a. 鏃嬭漿鍓嶇殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓?
            (p)               B(p) = H(t) - H(1) = 2D
            / \
          (t) (1)             B(t) = H(n) - H(2)
          / \
        (n) (2)               B(n) = H(3) - H(4)
        / \
      (3) (4)                 鍚屾椂蹇呭畾瀛樺湪: B(t) != D', 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   b. 鏃嬭漿鍚庣殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓? (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負(fù) P, T, N)
          ( T  )              B(T) = H(N) - H(P)
          /    \              B(N) = H(3) - H(4)
        (N)    (P)            B(P) = H(2) - H(1)
        / \    / \
      (3) (4) (2)(1)          鍚屾椂蹇呭畾瀛樺湪: B(P) != D', 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   c. B(N) 鍏紡
      B(N) = H(3) - H(4)   \
      B(n) = H(3) - H(4)   /  =>    B(N) = B(n) = n.Balance

   d. B(P) 鍏紡
      B(t) = H(n) - H(2)      =>    H(2) = H(n) - B(t)  -+
      B(p) = H(t) - H(1) = 2D =>    H(1) = H(t) - 2D     +
                                    B(P) = H(2) - H(1)  -+

                              =>    B(P) = H(n) - H(t) - B(t) + 2D   \
      鐢變簬蹇呭畾: B(t) != D'    =>    H(t) = H(n) + D                  /
                                 => B(P) = D - B(t) = D - t.Balance

   e. B(T) 鍏紡
      B(t) = H(n) - H(2)      =>    H(n) = B(t) + H(2)  -+
      鐢變簬蹇呭畾: H(N) == H(n)  =>    B(T) = H(n) - H(P)   +
      鐢變簬蹇呭畾: B(P) != D'    =>    H(P) = H(2) + D     -+
                                 => B(T) = B(t) + H(2) - (H(2) + D)
                                 => B(T) = B(t) - D = t.Balance - D

   f. H(T) - H(p) 鍏紡 (鍗寵皟鏁村悗鐨勯珮搴﹀彉鍖?
      B(T) =  B(t) - D        => B(T) != D
                              => H(T)  = H(P) + D     -+
      H(P) = / H(1) + 2D   褰?B(P) == D                +
             \ H(1) + D    褰?B(P) == 0               -+
                              => H(T) = / H(1) + 3D   褰?B(P) == D   -+
                                        \ H(1) + 2D   褰?B(P) == 0    |
                                                                      + =>
      H(p) = H(t) + D   \                                             |
      H(t) = H(1) + 2D  /     => H(p) = H(1) + 3D                    -+

      H(T) - H(p) = / 0    褰?B(P) == D => B(t) == 0
                    \ -D   褰?B(P) == 0 => B(t) != 0


4. 鏃嬭漿鏂瑰紡(Left-Right)
   a. 鏃嬭漿鍓嶇殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓?
            (p)               B(p) = H(t) - H(1) = 2D
            / \
          (t) (1)             B(t) = H(2) - H(n)
          / \
        (2) (n)               B(n) = H(3) - H(4)
            / \
          (3) (4)             鍚屾椂蹇呭畾瀛樺湪: B(t) != D, 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   b. 鏃嬭漿鍚庣殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓? (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負(fù) P, T, N)
          ( N  )              B(N) = H(T) - H(P)
          /    \              B(T) = H(2) - H(3)
        (T)    (P)            B(P) = H(4) - H(1)
        / \    / \
      (2) (3) (4)(1)          鍚屾椂蹇呭畾瀛樺湪: B(P) != D, 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   c. B(T) 鍏紡
      H(n) = / H(3) + 2D      褰?B(n) == D'
             \ H(3) + D       褰?B(n) != D'                    -+
                                                                |
      B(t) = H(2) - H(n)      =>    H(2) = H(n) + B(t)   \      +
                                    B(T) = H(2) - H(3)   /      |
                                 => B(T) = H(n) - H(3) + B(t)  -+

                              =>    B(T) = / B(t) + 2D         褰?B(n) == D'
                                           \ B(t) + D          褰?B(n) != D'

                              =>    B(T) = / t.Balance + 2D    褰?B(n) == D'
                                           \ t.Balance + D     褰?B(n) != D'

   d. B(P) 鍏紡
      H(n) = / H(4) + 2D      褰?B(n) == D
             \ H(4) + D       褰?B(n) != D                     -+
                                                                |
      鐢變簬蹇呭畾: B(t) != D     =>    H(t) = H(n) + D      \      +
      B(p) = H(t) - H(1) = 2D =>    H(1) = H(t) - 2D     /      |
                                 => H(1) = H(n) - D            -+

                              =>    H(1) = / H(4) + D          褰?B(n) == D
                                           \ H(4)              褰?B(n) != D   -+
                                                                               +
                                    B(P) = H(4) - H(1)                        -+

                              =>    B(P) = / D'                褰?B(n) == D
                                           \ 0                 褰?B(n) != D

   e. B(N) 鍏紡
                  +- 2D       褰?B(T) == 2D  -+
      瀹氫箟 X(T) = +  D        褰?B(T) == D    |
                  +- 0        褰?B(T) == 0    |
                              => X(T) = B(T)  + => H(T) = H(3) + B(T) + D     -+
             +- H(3) + 3D     褰?B(T) == 2D   |                                |
      H(T) = +  H(3) + 2D     褰?B(T) == D    |                                |
             +- H(3) + D      褰?B(T) == 0   -+                                |
                                                   B(N) = H(T) - H(P)          +
      瀹氫箟 X(P) = / D         褰?B(P) == D'  -+                                |
                  \ 0         褰?B(P) == 0    |                                |
                              => X(P) = -B(P) + => H(P) = H(4) - B(P) + D     -+
      H(P) = / H(4) + 2D      褰?B(P) == D'   |
             \ H(4) + D       褰?B(P) == 0   -+

                              =>    B(N) = H(3) - H(4) + (B(T) + B(P))  \
                                    B(n) = H(3) - H(4)                  /
                                 => B(N) = B(n) + B(T) + B(P)
                                         = n.Balance + B(T) + B(P)

   f. H(N) - H(p) 鍏紡 (鍗寵皟鏁村悗鐨勯珮搴﹀彉鍖?
      鐢變簬 B(T) in {0, D, 2D} => H(T) = H(2) + D
      鑻?B(n) != D'           => B(N) = B(T) => H(N) = H(T) + D = H(2) + 2D   -+
      鑻?B(n) == D'           => B(P) = 0                   -+                 |
                                 B(T) = B(t) + 2D            +                 |
                                 B(N) = B(n) + B(T) + B(P)  -+                 +
                                                                               |
                                 => B(N) = B(t) + D => H(N) = H(T) + D         |
                                                            = H(2) + 2D       -+

                                    => H(N) = H(2) + 2D     -+
      H(p) = / H(2) + 2D      褰?B(t) == 0                   + =>
             \ H(2) + 3D      褰?B(t) != 0                  -+

      H(N) - H(p) = / 0       褰?B(t) == 0
                    \ -D      褰?B(t) != 0


5. 鏃嬭漿鏂瑰紡(Right-Left)
   a. 鏃嬭漿鍓嶇殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓?
      娉? 鍥犳棆杞柟寮忎笌 (Left-Right) 宸﹀彸瀵圭О, 鎵浠ユ帹鐞嗘柟娉曠浉鍚? 鏁呯渷鐣ユ帹鐞嗚繃紼?/span>
            (p)               B(p) = H(1) - H(t) = 2D'
            / \
          (1) (t)             B(t) = H(n) - H(2)
              / \
            (n) (2)           B(n) = H(3) - H(4)
            / \
          (3) (4)             鍚屾椂蹇呭畾瀛樺湪: B(t) != D', 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   b. 鏃嬭漿鍚庣殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓? (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負(fù) P, T, N)
          ( N  )              B(N) = H(T) - H(P)
          /    \              B(P) = H(1) - H(3)
        (P)    (T)            B(T) = H(4) - H(2)
        / \    / \
      (1) (3) (4)(2)          鍚屾椂蹇呭畾瀛樺湪: B(P) != D', 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   c. B(T) 鍏紡
      B(T) = / t.Balance + 2D'褰?B(n) == D
             \ t.Balance + D' 褰?B(n) != D

   d. B(P) 鍏紡
      B(P) = / D              褰?B(n) == D'
             \ 0              褰?B(n) != D'

   e. B(N) 鍏紡
      B(N) = n.Balance + B(P) + B(T)

   f. H(N) - H(p) 鍏紡 (鍗寵皟鏁村悗鐨勯珮搴﹀彉鍖?
      H(N) - H(p) = / 0       褰?B(t) == 0
                    \ -D      褰?B(t) != 0


6. 鏃嬭漿鏂瑰紡(Right-Right)
   a. 鏃嬭漿鍓嶇殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓?
      娉? 鍥犳棆杞柟寮忎笌 (Left-Left) 宸﹀彸瀵圭О, 鎵浠ユ帹鐞嗘柟娉曠浉鍚? 鏁呯渷鐣ユ帹鐞嗚繃紼?/span>
            (p)               B(p) = H(1) - H(t) = 2D'
            / \
          (1) (t)             B(t) = H(2) - H(n)
              / \
            (2) (n)           B(n) = H(3) - H(4)
                / \
              (3) (4)         鍚屾椂蹇呭畾瀛樺湪: B(t) != D, 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   b. 鏃嬭漿鍚庣殑鏍?wèi)缁撴瀯鍜屽嚱鏁版柟绋嬪涓? (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負(fù) P, T, N)
          ( T  )              B(T) = H(P) - H(N)
          /    \              B(P) = H(1) - H(2)
        (P)    (N)            B(N) = H(3) - H(4)
        / \    / \
      (1) (2) (3)(4)          鍚屾椂蹇呭畾瀛樺湪: B(P) != D, 鍙互鐢ㄥ弽璇佹硶璇佹槑.

   c. B(N) 鍏紡
      B(N) = B(n) = n.Balance

   d. B(P) 鍏紡
      B(P) = D' - B(t) = D' - t.Balance

   e. B(T) 鍏紡
      B(T) = B(t) - D' = t.Balance - D'

   f. H(T) - H(p) 鍏紡 (鍗寵皟鏁村悗鐨勯珮搴﹀彉鍖?
      B(T) =  B(t) - D'       => B(T) != D'
                              => H(T)  = H(P) + D     -+
      H(P) = / H(1) + 2D   褰?B(P) == D'               +
             \ H(1) + D    褰?B(P) == 0               -+
                              => H(T) = / H(1) + 3D   褰?B(P) == D'  -+
                                        \ H(1) + 2D   褰?B(P) == 0    |
                                                                      + =>
      H(p) = H(t) + D   \                                             |
      H(t) = H(1) + 2D  /     => H(p) = H(1) + 3D                    -+

      H(T) - H(p) = / 0    褰?B(P) == D'=> B(t) == 0
                    \ -D   褰?B(P) == 0 => B(t) != 0


7. 澧?鍒犵粨鐐圭殑瑕佺偣鍒嗘瀽
   a. 鎻掑叆緇撶偣
      鎻掑叆緇撶偣娌跨潃鏍圭粨鐐瑰悜涓婂鍔犲鉤琛″? 鑻ユ嫻嬪埌 p 涓?2D 鎴?2D' 鏃? 鍙浣跨敤 LL,
   LR, RL, 鎴?RR 涓殑涓縐嶆棆杞皟鏁村鉤琛″? 涓斿彧瑕侀渶瑕佷竴嬈″嵆鍙茍涓鍚戜笂澧炲姞騫寵 鍊?

   b. 鍒犻櫎緇撶偣
      1). 鐢變簬 LR 鏃嬭漿, 鑻?B(t) == 0 涓?B(n) == D' 鏃? 鍒欏瓨鍦?B(T) = 2D 鍗沖け鍘誨鉤
         琛? 鎵浠ュ湪鍒犻櫎緇撶偣鑻ラ亣鍒?B(t) == 0 鏃跺氨鏀逛負(fù) LL 鏃嬭漿鍗沖彲閬垮紑 B(T) = 2D;

      2). 鐢變簬 RL 鏃嬭漿, 鑻?B(t) == 0 涓?B(n) == D 鏃? 鍒欏瓨鍦?B(T) = 2D' 鍗沖け鍘誨鉤
         琛? 鎵浠ュ湪鍒犻櫎緇撶偣鑻ラ亣鍒?B(t) == 0 鏃跺氨鏀逛負(fù) RR 鏃嬭漿鍗沖彲閬垮紑 B(T) = 2D';

      3). 鍒犻櫎緇撶偣娌跨潃鏍圭粨鐐瑰悜涓婂噺鍘誨鉤琛″? 鑻ユ嫻嬪埌 p 涓?2D 鎴?2D' 鏃? 鍙浣跨敤
         LL, LR, RL, 鎴?RR 涓殑涓縐嶆棆杞皟鏁村鉤琛″? 褰?B(t) == 0 鏃朵腑姝㈠悜涓婂噺鍘誨鉤
         琛″? 鍚﹀垯蹇呴』鍚戜笂鍑忓幓騫寵 鍊?

 



Kyee Ye 2011-05-22 10:44 鍙戣〃璇勮
]]>
久久国产精品无| 欧美精品一区二区精品久久| 日韩一区二区三区视频久久| 亚洲欧美日韩精品久久亚洲区| 久久人人爽人人爽人人片AV不| 久久综合九色综合网站| 国产激情久久久久影院老熟女免费 | 青青草国产成人久久91网| 99久久久精品免费观看国产| 久久99精品久久久久久9蜜桃| 久久久久亚洲国产| 97热久久免费频精品99| 亚洲AⅤ优女AV综合久久久| 国内精品人妻无码久久久影院| 久久久精品波多野结衣| 国内精品久久久久久久97牛牛| 久久亚洲国产成人影院网站| 国产69精品久久久久777| 伊人久久大香线蕉无码麻豆| 国产精品VIDEOSSEX久久发布 | 女人香蕉久久**毛片精品| 综合人妻久久一区二区精品| 久久久久亚洲AV成人网| 久久99精品国产麻豆宅宅| 亚洲精品高清国产一线久久| 久久99国产精品成人欧美| 成人免费网站久久久| 久久妇女高潮几次MBA| 久久婷婷五月综合97色直播| 久久国产免费观看精品| 91精品国产综合久久久久久| 久久男人Av资源网站无码软件 | 51久久夜色精品国产| 日产精品久久久久久久性色| 久久久久亚洲精品日久生情| 日本久久中文字幕| 久久久久亚洲av毛片大| 青青草国产97免久久费观看| 久久夜色撩人精品国产| 久久伊人中文无码| 亚洲Av无码国产情品久久|