左旋轉、右旋轉、雙旋
1,LL :– 右旋轉(單旋):為啥LL ,要用右旋轉:LL 的意思是:左左,說明左邊高度多了一個?
--------------------左邊過重失衡,右旋轉,把重量勻稱一點到右邊。
2,RR: – 左旋轉(單旋):為啥RR ,要用左旋轉:RR 的意思是:右右,說明右邊高度多了一個?
--------------------右邊過重失衡,左旋轉,把重量勻稱一點到左邊。
3,LR – RR:左旋轉,然后得到 LL,再右旋轉(雙旋):首先看LR-RR結構的最后一對是RR,
■ 為啥RR, 要用左旋轉:RR 的意思是:右右,說明右邊高度多了一個?
--------------------右邊過重失衡,左旋轉,把重量勻稱一點到左邊。
■ 然后得到LL,要用右旋轉,LL的意思是:左左,說明左邊高度多了一個?
--------------------左邊過重失衡,右旋轉,把重量勻稱一點到右邊。
4,RL – LL:右旋轉,然后得到 RR,再左旋轉(雙旋):首先看RL-LL 結構最后一對是LL,
■ 為啥LL, 要用右旋轉:LL 的意思是:左左,說明左邊高度多了一個?
--------------------左邊過重失衡,右旋轉,把重量勻稱一點到右邊。
■ 然后得到RR,要用左旋轉,RR的意思是:右右,說明右邊高度多了一個?
--------------------右邊過重失衡,左旋轉,把重量勻稱一點到左邊。
1、旋轉的意義:就是為了勻稱掉失衡的狀態。 ✿ 最后一個字母就是提示失衡的情況: ● LL: 是左邊失衡~ 右旋轉 ● RR:是右邊失衡~ 左旋轉 ● LR-RR: (可以看到該結構最后一對是 RR,是右邊失衡)左旋轉,處理后得到~LL(是左邊失衡),右旋轉。 ● RL-LL:(可以看到該結構最后一對是 LL,是左邊失衡)右旋轉,處理后得到~RR(是右邊失衡),左旋轉。 |
1,LL型【右旋轉】的代碼:
g.left = p.right;
p.right = g;
理解:右旋g:將p的right 賦值給了g.left 。【原先模型中,g.left = p】
然后 p.right 指向了g。
【形態理解上:】【g的 左邊太重了】處理:
g.left = p.right; ● 代碼意思:p 要丟給了g 最近的孩子(右孩子),然后 p 爬升了,
p.right = g; ● 代碼意思:g 拿了 p 的右孩子后下沉了,p 的右孩子變成了下層的 g。
形象生動地使用現實中天平平衡的理解角度即可啦~
2,如何用代碼判斷是LL、RR、LR、RL 型的呢?
1,先看父節點是 左,則 L:
● 然后再看當前結點是左,則 LL,否則是右,則LR;
2, 若父結點是 右,則 R:
● 然后再看當前結點是左,則RL,否則是右,則RR;