티스토리 뷰
이런 max heap에서 원소 하나를 삽입한다고 해 보자.
complete binary tree의 조건을 만족하려면, 원소 하나가 들어갔을 때 트리는 무조건
저 자리에 들어갈 수 밖에 없다.
삽입되는 원소의 정확한 위치를 결정하기 위해서는, 트리의 새 노드에서 시작해서 루트 쪽으로 올라가는 bubbling-up 방법을 사용하면 된다고 한다. 삽입되는 원소는 삽입이 완료된 뒤, 최대 힙이 되는 것이 확인될 때 까지 위쪽으로 계속 올라간다.
예를 들어서 생각해보자! 새로운 원소가 30이라면, 바로 저 자리에 넣으면 된다. 그러나 값이 49이면 넣을 수 없다. 그러므로 31을 검은색 위치에 넣고, 최대 힙이 되는지 본다. 여전히 안 된다. 그럼 48을 그 자리에 넣는다. 여전히 안된다. 51을 그 자리에 넣는다. 이제야 된다!
이런식으로 구현을 하려면, 노드에서 자신의 부모 노드로 갈 수 있어야 한다.
코드는 다음과 같다!
복잡도는 O(log2n)이다.
'Algorithm > 이론' 카테고리의 다른 글
[자료구조] binary search tree(이진 탐색 트리) (0) | 2019.05.31 |
---|---|
[자료구조] heap/최대 heap에서 delete (0) | 2019.05.31 |
[자료구조] heap(힙), priority queue(우선순위 큐) (0) | 2019.05.31 |
[자료구조] thread binary tree에서 inorder traverse 하기 (0) | 2019.05.31 |
[자료구조] thread binary tree(쓰레드 이진 트리) (0) | 2019.05.31 |