1
只是一個關於avl樹的簡單問題。 如果我有這棵樹:AVL Tree Rotation的
27
/\
9 50
/\
2 15
\
21
它爲什麼會平衡這個答案?:
15
/\
9 27
//\
2 21 50
這不是(或者是它們都有效嗎?):
21
/\
15 27
/\ \
2 9 50
只是一個關於avl樹的簡單問題。 如果我有這棵樹:AVL Tree Rotation的
27
/\
9 50
/\
2 15
\
21
它爲什麼會平衡這個答案?:
15
/\
9 27
//\
2 21 50
這不是(或者是它們都有效嗎?):
21
/\
15 27
/\ \
2 9 50
根據到AVL樹的回溯算法,平衡分兩步完成:
I. left rotation
完成左子樹:
| |
9 15
/\ /\
2 15 => 9 21
\ /
21 2
二, right rotation
是整個樹進行:
27 15
/\ /\
15 50 => 9 27
/\ //\
9 21 2 21 50
/
2
第二個答案是不正確只是因爲它沒有保存元素的順序。
您是否意外更換了第二個中的9和15?因爲它不是一個有效的搜索樹。但它仍然是平衡的。 – BenW