• 특징





각각의 노드는 고유한 키값이 존재


각 키값은 중복될 수 없다!


자식 노드는 최대 2개 까지


부모보다 작은 노드는 왼쪽에, 큰 노드는 오른쪽에 위치한다


탐색은 항상 최상단 루트(Root)부터




  • 삽입





새 노드의 위치를 찾기 위해서 루트(Root)부터 탐색한다.


탐색한 노드보다 새 노드가 작으면 왼쪽, 크면 오른쪽으로 계속 탐색


다음 탐색 위치가 비어있다면, 그 위치에 새 노드 삽입





삽입 종료






  • 삭제


삭제는 몇가지 종류로 나뉜다.

01. 자식이 없는 노드 삭제

02. 자식이 한쪽만 있는 노드 삭제

03. 자식이 양쪽 다 있는 노드 삭제



    • 자식이 없는 노드 삭제

가장 간단한 경우 이다.

그냥 삭제하면 된다.




    • 자식이 한쪽만 있는 노드 삭제    


삭제할 노드의 자식을

삭제노드의 위치로 옯겨주고

노드를 삭제하면 된다.








    • 자식이 양쪽 다 있는 노드 삭제


자식이 양쪽 다 있는 노드를 삭제할때

왼쪽에서 가장 큰 노드를 찾아 삭제노드 위치에 두는 방법

오른쪽에서 가장 작은 노드를 찾아 삭제노드 위치에 두는 방법등

여러 방법은 많지만, 아래의 방법은 왼쪽에서 가장 큰 노드를 찾는 방법이다.




왼쪽에서 가장 큰 노드는 오른쪽 자식 노드가 없기 때문에

고려하지 않아도 된다.




    • 삭제 전체 코드




  • 전체 코드



+ Recent posts