나는 것을 증명하기 위해 노력하고있어 바이너리 힙 과 노드가 정확히이 ⌈ N을힙이 다음과 같은 방식으로 구축 된 경우 2 ⌉의잎 :
각 새 노드는 percolate up을 통해 삽입 됩니다 . 즉, 사용 가능한 다음 자식에서 각각의 새 노드를 만들어야합니다. 내가 의미하는 바는 아이들은 수평으로 채워지고 왼쪽에서 오른쪽으로 채워진다는 것입니다. 예를 들어 다음 힙은 다음과 같습니다.
0
/ \
1 2
것 이 이 순서에 내장 된 것으로 : 0, 1, 2 (숫자들은 해당 노드에서 개최 된 실제 데이터의 징후를주지 단지 인덱스입니다.)
여기에는 두 가지 중요한 의미가 있습니다.
레벨에는 노드가 존재하지 않을 수있는 레벨 않고 K가 완전히 채워지
하위는 왼쪽에서 오른쪽으로 빌드되므로 레벨의 노드 사이 또는 다음과 같은 상황 에 "빈 공간"이있을 수 없습니다 .
0 / \ 1 2 / \ \ 3 4 6
(이것은 내 정의에 의해 잘못된 힙 일 것입니다.) 따라서이 힙을 생각하는 좋은 방법은 힙의 배열 구현 입니다.
그래서, 유도가 아마도 이것을하기에 좋은 방법이라고 생각했습니다. 아마도 n에 대한 이상한 경우조차도 다루어야 할 것입니다. 예를 들어, 이러한 방식으로 빌드 된 힙조차도 짝수 n에 대해 하나의 자식이 있고 홀수 n에 대한 해당 노드가없는 내부 노드가 있어야한다는 사실을 사용한 일부 유도. 아이디어?