锘??xml version="1.0" encoding="utf-8" standalone="yes"?>一本久久a久久精品综合香蕉,国内精品伊人久久久久,久久热这里只有精品在线观看http://www.shnenglu.com/kyee/category/16949.html紼嬪簭鍛樺簲璇ヨ剼韙忓疄鍦幫紝鍒囧繉蹇冩誕姘旂嚗銆?/description>zh-cnSun, 22 May 2011 03:09:18 GMTSun, 22 May 2011 03:09:18 GMT60鍏充簬騫寵 浜屽弶鏍?AVL tree)鏃嬭漿鍚庡鉤琛℃爣蹇楄皟鏁寸殑璁$畻鍏紡http://www.shnenglu.com/kyee/articles/146903.htmlKyee YeKyee YeSun, 22 May 2011 02:44:00 GMThttp://www.shnenglu.com/kyee/articles/146903.htmlhttp://www.shnenglu.com/kyee/comments/146903.htmlhttp://www.shnenglu.com/kyee/articles/146903.html#Feedback0http://www.shnenglu.com/kyee/comments/commentRss/146903.htmlhttp://www.shnenglu.com/kyee/services/trackbacks/146903.html--------------------------------------------------------------------------------
鏍囬: 鍏充簬騫寵 浜屽弶鏍?AVL tree)鏃嬭漿鍚庡鉤琛℃爣蹇楄皟鏁寸殑璁$畻鍏紡
浣滆? 鍙墮铏?/span>
寤虹珛: 2009.10.18
鍙樻洿: 2010.06.22
--------------------------------------------------------------------------------

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

      鍏朵腑 Height 涓虹粨鐐圭殑瀛愭爲楂樺害(>= 0), 綆楁硶綆鍗曞氨鏄鍙宸﹀彸瀛愭爲楂樺害鐩稿噺鍗沖彲,
   浣嗚繍琛屾晥鐜囦笉楂樸傚綋緇撶偣鏁頒笂鍗冧互涓婃椂, 棰戠箒澧炲垹緇撶偣甯︽潵寮閿浼氱浉褰撳彲瑙? 姝e洜濡傛,
   鏈漢閫氳繃鎺ㄧ悊寰楀埌鐨勮綆楀叕寮忓氨闈炲父閲嶈浜嗐?/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 涓哄乏瀛愭爲澧為噺, D' 涓哄彸瀛愭爲澧為噺, 涓?D = -D', D 鍙互瀹氫箟
      涓?1 鎴?-1, 鍏朵腑:
      1). D = 1  鍒欒〃紺哄鉤琛℃爣蹇楄綆楁柟娉曚負: Height(Left) - Height(Right)
      2). D = -1 鍒欒〃紺哄鉤琛℃爣蹇楄綆楁柟娉曚負: 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)| 鍒欏間負: H(n.Left)
      2). |H(n.Left)| <  |H(n.Right)| 鍒欏間負: H(n.Right)

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


3. 鏃嬭漿鏂瑰紡(Left-Left)
   a. 鏃嬭漿鍓嶇殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅:
            (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. 鏃嬭漿鍚庣殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅: (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負 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. 鏃嬭漿鍓嶇殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅:
            (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. 鏃嬭漿鍚庣殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅: (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負 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. 鏃嬭漿鍓嶇殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅:
      娉? 鍥犳棆杞柟寮忎笌 (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. 鏃嬭漿鍚庣殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅: (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負 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. 鏃嬭漿鍓嶇殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅:
      娉? 鍥犳棆杞柟寮忎笌 (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. 鏃嬭漿鍚庣殑鏍戠粨鏋勫拰鍑芥暟鏂圭▼濡備笅: (娉? 緇撶偣 p, t, n 鏃嬭漿鍚庡垎鍒畾涔変負 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 鏃跺氨鏀逛負 LL 鏃嬭漿鍗沖彲閬垮紑 B(T) = 2D;

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

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

 



Kyee Ye 2011-05-22 10:44 鍙戣〃璇勮
]]>
日韩一区二区三区视频久久| 久久久久九九精品影院| 久久亚洲精品国产亚洲老地址| 狠狠色婷婷综合天天久久丁香| 久久精品国产久精国产果冻传媒 | 中文字幕久久精品无码| 亚洲v国产v天堂a无码久久| 国产精品免费久久久久影院| 久久精品国产免费| 狠狠久久亚洲欧美专区| 久久最新精品国产| 日本一区精品久久久久影院| 国产A级毛片久久久精品毛片| 国产2021久久精品| 国产精品免费久久久久电影网| 国产午夜电影久久| 久久精品国产色蜜蜜麻豆| 国产农村妇女毛片精品久久| 久久精品亚洲乱码伦伦中文| 久久久久黑人强伦姧人妻| 亚洲国产一成久久精品国产成人综合 | 精品无码人妻久久久久久| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久久久99精品成人片直播| 精品久久久久久国产潘金莲| 国产精品女同久久久久电影院| 久久99国产亚洲高清观看首页 | 色婷婷噜噜久久国产精品12p| 亚洲人成电影网站久久| 伊人久久大香线蕉av不变影院| 人妻少妇久久中文字幕| 久久精品国产免费| 午夜精品久久久久| 久久久免费精品re6| 国产午夜久久影院| 午夜精品久久久久久| 久久久久AV综合网成人| 久久国产乱子伦精品免费午夜| 国产精品久久久久久五月尺| 99国产精品久久久久久久成人热| 久久黄视频|