균형 잡힌 나무의 정의


102

나는 누군가가 나를 위해 균형 잡힌 트리의 정의를 명확히 해줄 수 있는지 궁금합니다. 나는 "각 하위 트리가 균형을 이루고 두 하위 트리의 높이가 최대 1만큼 다른 경우 트리가 균형을 이룹니다.

이것이 멍청한 질문이라면 사과드립니다. 그러나이 정의가 나무의 잎까지 모든 노드에 적용됩니까, 아니면 루트에서 바로 떨어진 왼쪽 및 오른쪽 하위 트리에만 적용됩니까? 이것을 프레임하는 또 다른 방법은 트리의 내부 노드가 불균형하고 전체 트리가 균형을 유지하는 것이 가능할까요?


6
우리가 Comp에 대해 이야기하고 있다고 덧붙이고 싶었습니다. 하위 트리의 과학적 정의 : 트리 T의 하위 트리는 T의 노드와 T의 모든 하위 항목으로 구성된 트리입니다. 일반적인 수학적 정의 (그 자체가 트리 인 트리의 하위 그래프)의 경우 이는 사실이 아닙니다. .
TT_ 2013

답변:


123

제약 조건은 일반적으로 모든 하위 트리에 재귀 적으로 적용됩니다. 즉, 트리는 다음과 같은 경우에만 균형을 이룹니다.

  1. 왼쪽 및 오른쪽 하위 트리의 높이가 최대 1만큼 다릅니다.
  2. 왼쪽 하위 트리가 균형을 이루고 있으며
  3. 올바른 하위 트리가 균형을 이룹니다.

이것에 따르면 다음 트리는 균형을 이룹니다.

     A
   /   \
  B     C  
 /     / \  
D     E   F  
     /  
    G  

다음 은 C의 하위 트리의 높이가 2만큼 다르기 때문에 균형 이 맞지 않습니다 .

     A
   /   \
  B     C   <-- difference = 2
 /     /
D     E  
     /  
    G  

즉, 첫 번째 점의 특정 제약은 나무 유형에 따라 다릅니다. 위에 나열된 것은 AVL 트리 의 일반적인 것입니다 .

예를 들어 빨강-검정 나무 는 더 부드러운 제약을 부과합니다.


52

"균형"을 정의하는 방법에는 여러 가지가 있습니다. 주요 목표는 모든 노드의 깊이를 O(log(n)).

말씀하신 균형 조건은 AVL 트리에 대한 것 같습니다 .
다음은 AVL 트리의 균형 조건에 대한 공식적인 정의입니다 .

AVL의 모든 노드에서 왼쪽 하위 트리 의 높이는 오른쪽 하위 트리의 높이 에서 최대 1 만큼 다릅니다 .

다음 질문, " 높이 "는 무엇입니까?

이진 트리에서 노드 의 " 높이 "는 해당 노드에서 리프까지 가장 긴 경로의 길이입니다.

이상하지만 일반적인 경우가 하나 있습니다.

사람들은 빈 나무의 높이를 (-1).

예를 들어 루트의 왼쪽 자식은 null다음과 같습니다.

              A  (Height = 2)
           /     \
(height =-1)       B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
                    \
                     C (Height = 0)

결정할 두 가지 예 :

예, 균형 잡힌 트리 예 :

        A (h=3)
     /     \
 B(h=1)     C (h=2)        
/          /   \
D (h=0)  E(h=0)  F (h=1)
               /
              G (h=0)

아니요, 균형 잡힌 트리가 아닙니다 .

        A (h=3)
     /     \
 B(h=0)     C (h=2)        <-- Unbalanced: 2-0 =2 > 1
           /   \
        E(h=1)  F (h=0)
        /     \
      H (h=0)   G (h=0)      

1
이 정의는 균형 잡힌 트리의 불균형 하위 트리를 허용합니다. (예 : D에 자식을 추가하고 G에 다른 자식을 추가하여 위의 균형 트리 예제를 확장) 이것이 의도 된 것입니까?
gen

2
아니에요. " AVL의 모든 노드에 대해 왼쪽 하위 트리의 높이는 오른쪽 하위 트리의 높이와 최대 1만큼 다릅니다." D에 자식을 추가하면 B는 위의 규칙을 따르지 않습니다. 따라서 나무는 BBT가 아닙니다.
John Red

1
당신의 대답은 매우 상세하고 정확하지입니다
Marwen 트라벨시

9

이 두 가지 사이에는 차이가 없습니다. 생각해보세요.

"양수는 0이거나 2를 뺀 숫자가 짝수 인 경우에도 양수는 짝수입니다."라는 더 간단한 정의를 들어 보겠습니다. 이것은 6이 짝수 인 경우에도 8이 짝수라는 말입니까? 아니면 8은 6, 4, 2, 0이 짝수라고할까요?

차이가 없습니다. 6이 짝수 인 경우 8은 짝수라고하면 6은 4가 짝수 인 경우에도 마찬가지입니다. 그래서 그것은 또한 2가 짝수 인 경우에도 4라고 말합니다. 따라서 0이 짝수 인 경우에도 2는라고 말합니다. 따라서 8이 6이 짝수이더라도 8은 (간접적으로) 6, 4, 2, 0이 짝수 인 경우라고 말합니다.

여기서도 마찬가지입니다. 간접 하위 트리는 직접 하위 트리 체인에서 찾을 수 있습니다. 따라서 직접 하위 트리에만 직접 적용 되더라도 모든 하위 트리 (따라서 모든 노드)에 간접적으로 적용됩니다.


1
근의 값이 15라고합시다. 오른쪽 아래에는 16,17,18이 있습니다. 왼쪽 아래에 14,13,12가 있습니다. 그것은 균형 잡힌 나무입니까? 노드에서 떨어진 각 하위 트리의 높이는 1 이내입니다. 그러나 루트 아래의 첫 번째 노드를 오른쪽으로 가져 가면 왼쪽 자식이 없지만 오른쪽 자식의 높이는 2입니다. 따라서 노드가 균형을 이루지 않습니다. 그 맞습니까?
Mark Soric 2011

1
옳은. 따라서 나무는 균형이 맞지 않습니다.
David Schwartz 2011

1
따라서 트리가 균형을 이루기 위해서는 모든 노드가 균형을 이루어야합니다. 뷰티-도와 주셔서 감사합니다.
Mark Soric 2011

1
@DavidSchwartz 균형 잡힌 트리를 사용하는 이유는 무엇입니까? 나무가 균형을 이루는 지 아닌지 왜 신경 쓰나요?
Dejell 2013-06-23

3
이것은 내가 지금까지 본 가장 복잡한 대답입니다. 이렇게 말해서 죄송합니다.
Trevor

4

균형 잡힌 트리는 높이가 로그 (트리의 요소 수) 순서 인 트리입니다.

height = O(log(n))
O, as in asymptotic notation i.e. height should have same or lower asymptotic
growth rate than log(n)
n: number of elements in the tree

"트리가 각 하위 트리의 균형을 이루고 있으며 두 하위 트리의 높이가 최대 1만큼 차이가 난다"라는 정의는 AVL 트리가 뒤 따릅니다.

AVL 트리는 균형을 이루지 만 모든 균형 트리가 AVL 트리는 아니기 때문에 균형 잡힌 트리는이 정의를 유지하지 않으며 내부 노드는 균형이 맞지 않을 수 있습니다. 그러나 AVL 트리는 모든 내부 노드가 균형을 이루도록 요구합니다.


3

균형 잡힌 트리의 목표는 최소 순회 (최소 높이)로 잎에 도달하는 것입니다. 나무의 정도는 가지 수에서 1을 뺀 값입니다. 균형 잡힌 나무는 이진이 아닐 수 있습니다.


0
  1. 트리에서 노드의 높이는 경로의 시작 및 끝 꼭지점을 모두 계산하여 해당 노드에서 리프까지 아래쪽으로 가장 긴 경로의 길이입니다.
  2. 트리의 노드는 하위 트리의 높이가 1 이하로 다른 경우 높이 균형을 이룹니다.
  3. 모든 노드가 높이 균형을 이루면 나무는 높이 균형이 잡 힙니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.