이 글은 유튜브에 있는 신찬수 교수님의 자료구조 강의를 공부하고 정리한 자료이다.
preorder: 루트 노드에서 시작해서 노드-왼쪽 서브트리-오른쪽 서브트리 순으로 순회하는 방식 (MLR)
-> 1, 2, 4, 5, 3
inorder: 루트 노드에서 시작해서 왼쪽 서브트리-노드-오른쪽 서브트리 순으로 순회하는 방식 (LMR)
-> 4, 2, 5, 1, 3
postorder: 루트 노드에서 시작해서 왼쪽 서브트리-오른쪽 서브트리-노드 순으로 순회하는 방식 (LRM)
-> 4, 5, 2, 3, 1
(출처: https://mattlee.tistory.com/30)
(출처 https://zeddios.tistory.com/492)
1. 자식이 없는 노드를 지울 때 (리프 노드)
2. 자식이 하나만 있는 노드를 지울 때
7을 삭제해 주려고 한다.
5가 9를 가리키게 하고,
3. 자식이 둘 다 있는 노드를 지울 때
15를 삭제하고자 한다.
이때는 2가지 방법이 있다.
1. 오른쪽 자식 중 가장 작은 값을 15가 있던 자리로 옮긴다
2. 왼쪽 자식 중 가장 큰 값을 15가 있던 자리로 옮긴다.
1의 방법을 선택하면,(1방법이 많이 쓰인다고 함)
자식이 하나만 있거나, 없는 노드를 지우는 상황이 된다. (2의 상황)
but
Reference
https://ratsgo.github.io/data%20structure&algorithm/2017/10/21/tree/
https://mattlee.tistory.com/30
https://zeddios.tistory.com/492