글쎄, 나무 위로 올라와야하기 때문에 삽입과 삭제 모두 여러 번 회전 할 수 있습니다.
예를 들어 {5,2,4,3,7,8,10,9}의 데이터 세트를 추가 한 다음 {5}을 제거하고 {9}를 추가하고 마지막으로 {2}을 제거합니다. 당신은 다음을 얻습니다.
addValue. id=5
└── (1) 5
addValue. id=2
└── (2) 5
└── (1) 2
addValue. id=4
└── (3) 5 *unbalanced left 2 - right 0*
└── (2) 2
└── (1) 4
After left rotation:
└── (3) 5 *unbalanced left 2 - right 0*
└── (2) 4
└── (1) 2
After right rotation:
└── (2) 4
├── (1) 2
└── (1) 5
addValue. id=3
└── (3) 4
├── (2) 2
│ └── (1) 3
└── (1) 5
addValue. id=7
└── (3) 4
├── (2) 2
│ └── (1) 3
└── (2) 5
└── (1) 7
addValue. id=8
└── (3) 4
├── (2) 2
│ └── (1) 3
└── (3) 5 *unbalanced right 2 - left 0*
└── (2) 7
└── (1) 8
After left rotation:
└── (3) 4
├── (2) 2
│ └── (1) 3
└── (2) 7
├── (1) 5
└── (1) 8
addValue. id=10
└── (4) 4
├── (2) 2
│ └── (1) 3
└── (3) 7
├── (1) 5
└── (2) 8
└── (1) 10
addValue. id=9
└── (4) 4
├── (2) 2
│ └── (1) 3
└── (3) 7
├── (1) 5
└── (3) 8 *unbalanced left 0 - right 2*
└── (2) 10
└── (1) 9
After right rotation:
└── (5) 4
├── (2) 2
│ └── (1) 3
└── (4) 7
├── (1) 5
└── (3) 8 *unbalanced right 2 - left 0*
└── (2) 9
└── (1) 10
After left rotation:
└── (4) 4
├── (2) 2
│ └── (1) 3
└── (3) 7
├── (1) 5
└── (2) 9
├── (1) 8
└── (1) 10
removeValue. value=5
└── (4) 4
├── (2) 2
│ └── (1) 3
└── (3) 7 *unbalanced right 2 - left 0*
└── (2) 9
├── (1) 8
└── (1) 10
After left rotation:
└── (4) 4
├── (2) 2
│ └── (1) 3
└── (3) 9
├── (2) 7
│ └── (1) 8
└── (1) 10
addValue. id=9
└── (5) 4
├── (2) 2
│ └── (1) 3
└── (4) 9
├── (3) 7 *unbalanced right 2 - left 0*
│ └── (2) 8
│ └── (1) 9
└── (1) 10
After left:
└── (4) 4
├── (2) 2
│ └── (1) 3
└── (3) 9
├── (2) 8
│ ├── (1) 7
│ └── (1) 9
└── (1) 10
removeValue. value=2
└── (4) 4 *unbalanced right 3 - left 1*
├── (1) 3
└── (3) 9
├── (2) 8
│ ├── (1) 7
│ └── (1) 9
└── (1) 10
After right rotation:
└── (4) 4 *unbalanced right 3 - left 1*
├── (1) 3
└── (3) 8
├── (1) 7
└── (2) 9
├── (1) 9
└── (1) 10
After left rotation:
└── (3) 8
├── (2) 4
│ ├── (1) 3
│ └── (1) 7
└── (2) 9
├── (1) 9
└── (1) 10
자세히 알아 보려면 AVL 트리 here이 있습니다.
여러 차례의 구조 조정은 회전이 아닙니다. 구조 조정을 통해, 한 위치에서의 좌우 회전의 완전한 세트를 의미합니다. – zed111
@ zed111 회전과는 별도로 AVL 트리에서 구조 조정이 없습니다. 위의 예에서 이중 (왼쪽/오른쪽) 회전은 동일한 위치에서 수행됩니다. – Justin
나는 회전과는 별도로 구조 조정이 있다고 말한 적이 없다. 나는 단지 1 개의 구조 조정 = 1 개의 왼쪽 회전과 1 개의 오른쪽 회전을 한 곳에서 의미한다고 말했다. 삽입과 삭제의 차이점은 삽입시 최대 하나의 구조 조정 후에 트리 균형이 유지되는 반면 삭제시 여러 위치에서 구조 조정을 수행해야하므로 하나 이상의 구조 조정 – zed111