728x90
반응형
Java 자주 쓰이는 포화이진트리 수식
DFS나 BFS 문제를 풀면 포화이진트리(perfect binary tree)를 자주 볼 수 있다.
알아두면 좋은 수식을 정리해 본다.
- 포화이진트리(perfect binary tree)란?
- 모든 노드가 꽉 찬 이진트리를 말한다.
- node = [0, 1, 2, 3, 4, 5, 6];
- 노드의 개수 : n = node.length;
- level까지의 노드의 총 개수
- 2 ^ (level + 1) - 1
- level의 노드의 개수
- 2 ^ level
- 노드의 개수가 n 일 때, 몇 level까지 존재하는가
- Math.log()가 double이기 때문에 오차가 존재할 것이므로 완벽한 답은 아닙니다.
int getLevel(int n) {
return (int) (Math.log(n - 1) / Math.log(2));
}
- level 별 index 범위
- startIndex = 2 ^ (level + 1) - 2 ^ level - 1
- endIndex = 2 ^ (level + 1) - 2
- node[index] 의 left 노드와 right 노드
- left = node[index * 2 + 1]; (단, index * 2 + 1 > n 이면 null)
- right = node[index * 2 + 2]; (단, index * 2 + 2 > n 이면 null)
728x90
느낀 점
- 위 수식들을 외워 놓으면 시간을 절약할 수 있을 것이다.
다음에 학습할 것
- 포화이진트리 구현하기
반응형
포화이진트리에서 많이 쓰이는 수식에 대해 알아보았다.
728x90
반응형
'Club > 99클럽 코테 스터디 2기' 카테고리의 다른 글
99클럽 코테 스터디 17일차 TIL Deque 자료구조 (1) | 2024.06.05 |
---|---|
99클럽 코테 스터디 16일차 TIL 문자열 join (0) | 2024.06.04 |
99클럽 코테 스터디 14일차 TIL Java List 복사와 참조 (0) | 2024.06.02 |
99클럽 코테 스터디 13일차 TIL List to Map (0) | 2024.06.01 |
99클럽 코테 스터디 12일차 TIL List 자료구조 (0) | 2024.05.31 |
댓글