“완전한 이진 트리”,“엄격한 이진 트리”,“완전한 이진 트리”의 차이점은 무엇입니까?


80

나는 아래 나무의 용어에 대해 혼란스럽고 나무를 연구하고 있으며 이러한 나무를 구별 할 수 없습니다.

a) 완전한 이진 트리

b) 엄격한 이진 트리

c) 전체 이진 트리

이 나무들을 구별 할 수 있도록 도와주세요. 데이터 구조에서 이러한 트리가 언제 어디서 사용됩니까?


2
않습니다 en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees는 귀하의 질문에 대답하지?
rodion

7
하지의를 아니,이 사이에 많은 혼란
kTiwari

1
Strict Binary Tree : 모든 노드는 2 개의 하위 노드를 갖거나 전혀 가질 수 없습니다
vikkyhacks

답변:


73

위키 백과의 결과

완전한 이진 트리 (때로는 적절한 이진 트리 또는 2- 트리 또는 엄격하게 이진 트리)는 잎을 제외한 모든 노드에 두 개의 자식이있는 트리입니다.

따라서 자식이 하나 뿐인 노드가 없습니다. 엄격한 이진 트리와 동일하게 나타납니다.

다음은 google의 전체 / 엄격 바이너리 트리 이미지입니다.

여기에 이미지 설명 입력

완전한 이진 트리는 마지막 수준을 제외한 모든 수준이 완전히 채워지고 모든 노드가 가능한 한 왼쪽에있는 이진 트리입니다.

균형 잡힌 나무를 의미하는 것 같습니다.

다음은 Google의 완전한 이진 트리 이미지입니다. 이미지의 전체 트리 부분은 보너스입니다.

여기에 이미지 설명 입력


34
당신의 완전한 트리 예제는 또한 완전한 이진 트리의 기준을 충족하므로 차이가 분명히 흐려집니다. 제 생각에는 완전한 이진 트리가 아닌 완전한 트리의 예제를 제공하고 싶을 수도 있습니다. 답변 완료 :)
0decimal0

1
완전한 이진 트리와 엄격하게 이진 트리에는 차이가 있습니다. 대답을 참조하십시오 stackoverflow.com/a/32064101/5237727
Saurabh 바 티아

2
또한 모든 완전한 나무는 균형 잡힌 나무이지만 균형 잡힌 모든 나무가 반드시 완전한 나무는 아닙니다.
sfarbota

1
모든 레벨이 완전히 채워 졌다는 것은 무엇을 의미합니까?
lolololol ol dec

2
@lololololol 이는 해당 수준에있을 수있는 모든 노드가 있음을 의미합니다.
샘 I 오전는 분석 재개 모니카 말한다

87

완벽한 나무 :

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ / \ / \ / \
x x x x x x x x

완전한 나무 :

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ /
x x x

엄격한 / 전체 트리 :

       x
     /   \
    /     \
   x       x
  / \ 
 x   x 
    / \
    x x 

4
완벽한 이진 트리는 OP가 참조하는 완전한 이진 트리를 의미합니까?
RBT

3
완벽한 이진 트리는 Strict / Full 이진 트리와 Complete 이진 트리 모두이지만 그 반대의 경우도 항상 사실이 아닐 수 있습니다.
neo

51

STRICT와 FULL BINARY TREE에는 차이가 있습니다.

1) FULL BINARY TREE : 정확히 (2 ^ h) -1 요소를 포함하는 높이 h의 이진 트리를 전체 이진 트리 라고합니다 . (참조 : Pg 427, C ++의 데이터 구조, 알고리즘 및 응용 [University Press], Sartaj Sahni의 Second Edition).

또는 다른 말로

FULL BINARY TREE에서 각 노드에는 정확히 0 개 또는 2 개의 자식이 있으며 모든 리프 노드는 동일한 수준에 있습니다.

예 : 다음은 FULL BINARY TREE입니다.

          18
       /      \   
     15       30    
    /  \     /   \   
  40    50  100  40 

2) 엄격한 이진 나무 : 각 노드에는 정확히 0 개 또는 2 개의 자식이 있습니다.

예 : 다음은 STRICT BINARY TREE입니다.

         18
       /     \   
     15       30    
    /  \          
  40    50

나는 Complete Binary Tree의 정의에 혼동이 없다고 생각하지만, 여전히 게시물의 완전성을 위해 Complete Binary Tree가 무엇인지 말하고 싶습니다.

3) 완전한 이진 트리 : 마지막 수준을 제외한 모든 수준이 완전히 채워지고 마지막 수준에 가능한 한 모든 키가 남아 있으면 이진 트리는 완전한 이진 트리입니다.

예 : 다음은 완전한 이진 트리입니다.

           18
       /       \  
     15         30  
    /  \        /  \
  40    50    100   40
 /  \   /
8   7  9 

참고 : 다음은 완전한 이진 트리이기도합니다.

         18
       /     \   
     15       30    
    /  \     /   \   
  40    50  100  40 

완전한 이진 트리 정의에 대한 소스를 제공 할 수 있습니까? 이것은 NIST 에서 제공하는 Wikipedia의 것과 모순 됩니다.
Calvin Li

@CalvinLi 소스는 FULL BINARY TREE의 정의에 언급되어 있습니다. 다음은 PDF 링크입니다 (pdf 447 페이지) -o6ucs.files.wordpress.com/2012/10/…
Saurabh Bhatia

@SaurabhBhatia, 마지막 표현은 전체 이진 트리에도 적용됩니다. 틀 렸으면 말해줘. 어떻게 하나의 표현이 서로 다른 품종에 대해 사실 일 수 있습니까?
로즈

10

부인 성명- -일부 정의의 주요 소스는 위키피디아이며 내 답변을 개선하기위한 제안을 환영합니다.

이 게시물에는 허용되는 답변이 있고 좋은 답변이지만 여전히 혼란 스러웠으며 이러한 용어의 차이점에 대해 좀 더 설명을 추가하고 싶습니다.

(1) FULL BINARY TREE- 풀 바이너리 트리는 잎을 제외한 모든 노드에 두 개의 자식이있는 바이너리 트리로, 엄격하게 바이너리 트리 라고도 합니다 .

여기에 이미지 설명 입력 여기에 이미지 설명 입력

위의 두 가지는 전체 또는 엄격 이진 트리의 예입니다.

(2) 완전한 이진 트리- 이제 완전한 이진 트리의 정의는 매우 모호합니다 .- 완전한 이진 트리는 마지막을 제외한 모든 레벨 이 완전히 채워지고 모든 노드가 다음과 같은 이진 트리입니다. 최대한 왼쪽으로. 마지막 레벨 h에서 가능한 한 가장 왼쪽에있는 1 ~ 2h 노드를 가질 수 있습니다.

기울임 꼴로 표시된 선을 확인하십시오.

모호성은 이탤릭체로 된 줄에 있습니다. "마지막 레벨을 제외하고"는 마지막 레벨도 완전히 채워질 수 있음을 의미합니다. 즉,이 예외가 항상 충족 될 필요는 없습니다. 예외가 유지되지 않으면 내가 게시 한 두 번째 이미지와 똑같으며 완벽한 이진 트리 라고도합니다 . 따라서 완벽한 이진 트리도 완전하고 완전하지만 그 반대는 아닙니다.

ALMOST COMPLETE BINARY TREE- 완전한 이진 트리 정의의 예외가 유지되면 거의 완전한 이진 트리 또는 거의 완전한 이진 트리라고합니다. 그것은 완전한 이진 트리의 한 유형일 뿐이지 만 더 명확하게 만들기 위해서는 별도의 정의가 필요합니다.

따라서 거의 완전한 이진 트리는 다음과 같이 보일 것입니다. 이미지에서 노드가 가능한 한 멀리 남아 있으므로 완전한 이진 트리의 하위 집합에 가깝습니다. 더 엄격하게 말하면 거의 완전한 이진 트리가 완전한 이진 트리입니다. 나무이지만 그 반대는 아닙니다. :

여기에 이미지 설명 입력


6

위의 답변에서 결론을 내리면 완전 / 엄격, 완전 및 완벽한 바이너리 트리의 정확한 차이점은 다음과 같습니다.

  1. Full / Strictly binary tree :-리프 노드를 제외한 모든 노드에는 두 개의 자식이 있습니다.

  2. 완전한 이진 트리 :-마지막 레벨을 제외한 모든 레벨이 완전히 채워지고 모든 노드가 정렬됩니다.

  3. 완벽한 이진 트리 :-리프 노드를 제외한 모든 노드에는 두 개의 자식이 있으며 모든 수준 (마지막 수준도)이 완전히 채워집니다.


2

노드가 트리 방식으로 그려진 이진 트리를 고려하십시오. 이제 노드 번호를 위에서 아래로, 왼쪽에서 오른쪽으로 시작합니다. 완전한 트리에는 다음과 같은 속성이 있습니다.

n에 자식이 있으면 n보다 작은 번호의 모든 노드에는 자식이 두 개 있습니다.

n에 하나의 자식이있는 경우 왼쪽 자식이어야하며 n 미만의 모든 노드에는 두 개의 자식이 있어야합니다. 또한 n보다 큰 번호의 노드에는 자식이 없습니다.

n에 자식이 없으면 n보다 큰 번호의 노드에는 자식이 없습니다.

완전한 이진 트리를 사용하여 힙을 나타낼 수 있습니다. 간격없이 연속 메모리에서 쉽게 표현할 수 있습니다 (즉, 끝에 존재할 수있는 공간을 절약하기 위해 모든 배열 요소가 사용됨).


2

완전한 이진 트리는 완전한 이진 트리이지만 그 반대는 불가능하며 이진의 깊이가 n이면 아니오입니다. 전체 이진 트리의 노드 수는 (2 ^ n-1)입니다. 이진 트리에서 두 개의 자식을 가질 필요는 없지만 전체 바이너리에서는 모든 노드에 자식이 없거나 두 개 있습니다.


1
당신은 "역전이 불가능하다"고 엄격하게 말할 수 없다. 사실 당신의이 가정은 받아 들여진 대답의 완전한 나무의 예에서 무시된다 ... 당신은 오히려 가능할 수도 있고 아닐 수도 있다고 말해야한다
0decimal0

1
바이너리의 깊이가 n이면 아니오입니다. 전체 이진 트리의 노드 수는 (2 ^ n-1)입니다. 그러나 전체 이진 트리 정의는 모든 노드가 리프이거나 두 개의 자식을 갖는 트리입니다. 그래서 가능한 최대. 어린이의 수는 (2 ^ n-1)이지만 그보다 적을 수 있습니다.
mrida 2014 년

2

기본부터 시작하려면 이진 트리 자체를 이해하여 다른 유형을 이해하는 것이 매우 중요합니다.

트리는 다음과 같은 경우에만 이진 트리입니다.

– 하위 노드가 없을 수있는 루트 노드가 있습니다 (0 개의 하위 노드, NULL 트리).

– 루트 노드에는 1 개 또는 2 개의 하위 노드가있을 수 있습니다. 이러한 각 노드는 자체적으로 이진 트리를 형성합니다. 

– 하위 노드의 수는 0, 1, 2 ....... 2 이하일 수 있습니다.

– 루트에서 다른 모든 노드로의 고유 한 경로가 있습니다.

예 :

        X
      /    \
     X      X
          /   \
         X     X

문의 한 용어에 대해 설명합니다.

이진 트리는 다음과 같은 경우에만 완전한 이진 트리 (높이 h, 루트 노드를 0으로 취함)입니다.

레벨 0에서 h-1은 높이 h-1의 완전한 이진 트리를 나타냅니다.

– 수준 h-1에있는 하나 이상의 노드에 0 개 또는 1 개의 자식 노드가있을 수 있습니다.

j, k가 수준 h-1의 노드 인 경우 j가 k의 왼쪽에있는 경우에만 j보다 자식 노드가 더 많습니다. 즉, 마지막 수준 (h)에 리프 노드가 누락 될 수 있지만 존재하는 노드는 반드시 있어야합니다. 왼쪽으로 이동하다

예 :

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 

이진 트리는 다음과 같은 경우에만 엄격하게 이진 트리입니다.

각 노드에는 정확히 두 개의 하위 노드가 있거나 노드가 없습니다.

예 :

         X
       /   \
      X     X 
          /   \
         X      X
        / \    / \ 
       X   X  X   X 

바이너리 트리는 다음과 같은 경우에만 완전한 바이너리 트리입니다.

리프가 아닌 각 노드에는 정확히 두 개의 자식 노드가 있습니다.

모든 리프 노드는 동일한 수준에 있습니다.

예 :

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

완벽한 이진 트리가 무엇인지 알아야합니까?

이진 트리는 다음과 같은 경우에만 완벽한 이진 트리입니다.

– 완전한 이진 트리입니다.

– 모든 리프 노드가 동일한 수준에 있습니다.

예 :

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

글쎄요, 제가 평판이 10이 아니 어서 이미지를 올릴 수 없어서 죄송합니다. 이것이 당신과 다른 사람들에게 도움이되기를 바랍니다!


2

이진 트리에 대한 제한된 경험에서 다음과 같이 생각합니다.

  1. Strictly Binary Tree : 리프 노드를 제외한 모든 노드에는 두 개의 자식이 있거나 루트 노드 만 있습니다.
  2. Full Binary Tree : 2 ^ (H + 1) -1 노드를 포함하는 엄격히 (또는 정확히) H의 이진 트리입니다. 모든 수준에 가장 많은 노드가있는 것이 분명합니다. 또는 간단히 말해서 모든 리프 노드가 동일한 수준에있는 엄격한 이진 트리입니다.
  3. Complete Binary Tree : 마지막 레벨을 제외한 모든 레벨이 완전히 채워지고 모든 노드가 가능한 한 왼쪽에있는 바이너리 트리입니다.

1
완전한 이진 트리에 대한 정의가 잘못되었습니다. 즉, 완벽한 이진 트리의 정의입니다. 완전한 이진 트리는 엄격하게 이진 트리와 동의어입니다. (출처 : 엄격하게 이진 트리를 참조 faculty.cs.niu.edu/~mcmahon/CS241/Notes/bintree.html을 (: 완전 이진 트리를 참조 소스) slideshare.net/ajaykumarc137151/... )
Keego

1
맙소사, 방금 혼란 스러워요. 확실히 할게요. 감사합니다.
BertKing

1
문제 없습니다 :) 아래 @Lotus의 답변을 참조하십시오 . 나는 이것을 반영하기 위해 귀하의 답변에 대한 편집을 권장했습니다.
Keego

1

높이 'h'의 이진 트리를 고려해 보겠습니다. 이진 트리는 모든 잎이 시퀀스에서 누락 된 숫자없이 'h'또는 'h-1'높이에있는 경우 완전한 이진 트리라고합니다.

                   1
                 /   \
              2       3
            /    \         
         4        5

완전한 이진 트리입니다.

                   1
                 /   \
              2       3
            /        /    
         4         6    

시퀀스에서 5 번 노드가 누락되어 완전한 이진 트리가 아닙니다.


0

모든 노드에 0 개 또는 2 개의 자식이 있으면 전체 이진 트리가 가득 차 있습니다. 완전한 이진 수의 리프 노드는 내부 노드 수에 1을 더한 L = l + 1입니다.


0

완전한 이진 트리 : 최하위 수준을 제외한 모든 수준이 완전히 채워지고 모든 리프 요소가 자식을 남겨 두어야하는 한 가지 중요한 요소가 있습니다. Strict Binary Tree :이 트리에서 리프가 아닌 모든 노드에는 자식이 없습니다. 즉, 왼쪽도 오른쪽도 아닙니다. 전체 이진 트리 : 모든 노드에는 자식 0 개 또는 자식 2 개 (단일 자식 없음)가 있습니다.


>이 트리에서 다른 사람이 잎 노드는 모든 리프가 아닌 노드는 자식 즉 둘 다 왼쪽 없다도 바로 비 리프 노드는 적어도 하나의 아이를 가지고있다
nkrivenko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.