작성
·
42
0
이번 강의 3회차로 잘 보고 있습니다.
앞선 강좌 LCA 빠르게 찾기에서는 트리의 깊이는
2^K < (트리의 최대 높이)를 만족하는 K의 최대값이라고 하셨는데
실제 코딩 하실때는 아래 코드 처럼 작성하셨는데 최악인 편향 트리일때 과정하고 넉넉하게 K값을 구하는건 이해했습니다.
아래 코드에서는 N이 2^K > N 을 만족하는 최소 K값을 구하식으로 구하셨더라구요 이렇게 구해도 답은 나오는데 왜 이런지 몰라서 그런데 보충 설명 가능할까요?
// N의 트리가 편향 트리라고 간주
// 최악일 경우 KMax를 구한다.
int temp = 1;
KMax = 0;
while (temp <= N)
{
temp <<= 1;
KMax++;
}
// 2^k < N
// KMax - 1 하는게 맞지 않나?
답변