나는 아래 나무의 용어에 대해 혼란스럽고 나무를 연구하고 있으며 이러한 나무를 구별 할 수 없습니다.
a) 완전한 이진 트리
b) 엄격한 이진 트리
c) 전체 이진 트리
이 나무들을 구별 할 수 있도록 도와주세요. 데이터 구조에서 이러한 트리가 언제 어디서 사용됩니까?
나는 아래 나무의 용어에 대해 혼란스럽고 나무를 연구하고 있으며 이러한 나무를 구별 할 수 없습니다.
a) 완전한 이진 트리
b) 엄격한 이진 트리
c) 전체 이진 트리
이 나무들을 구별 할 수 있도록 도와주세요. 데이터 구조에서 이러한 트리가 언제 어디서 사용됩니까?
답변:
완전한 이진 트리 (때로는 적절한 이진 트리 또는 2- 트리 또는 엄격하게 이진 트리)는 잎을 제외한 모든 노드에 두 개의 자식이있는 트리입니다.
따라서 자식이 하나 뿐인 노드가 없습니다. 엄격한 이진 트리와 동일하게 나타납니다.
다음은 google의 전체 / 엄격 바이너리 트리 이미지입니다.
완전한 이진 트리는 마지막 수준을 제외한 모든 수준이 완전히 채워지고 모든 노드가 가능한 한 왼쪽에있는 이진 트리입니다.
균형 잡힌 나무를 의미하는 것 같습니다.
다음은 Google의 완전한 이진 트리 이미지입니다. 이미지의 전체 트리 부분은 보너스입니다.
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
부인 성명- -일부 정의의 주요 소스는 위키피디아이며 내 답변을 개선하기위한 제안을 환영합니다.
이 게시물에는 허용되는 답변이 있고 좋은 답변이지만 여전히 혼란 스러웠으며 이러한 용어의 차이점에 대해 좀 더 설명을 추가하고 싶습니다.
(1) FULL BINARY TREE- 풀 바이너리 트리는 잎을 제외한 모든 노드에 두 개의 자식이있는 바이너리 트리로, 엄격하게 바이너리 트리 라고도 합니다 .
위의 두 가지는 전체 또는 엄격 이진 트리의 예입니다.
(2) 완전한 이진 트리- 이제 완전한 이진 트리의 정의는 매우 모호합니다 .- 완전한 이진 트리는 마지막을 제외한 모든 레벨 이 완전히 채워지고 모든 노드가 다음과 같은 이진 트리입니다. 최대한 왼쪽으로. 마지막 레벨 h에서 가능한 한 가장 왼쪽에있는 1 ~ 2h 노드를 가질 수 있습니다.
기울임 꼴로 표시된 선을 확인하십시오.
모호성은 이탤릭체로 된 줄에 있습니다. "마지막 레벨을 제외하고"는 마지막 레벨도 완전히 채워질 수 있음을 의미합니다. 즉,이 예외가 항상 충족 될 필요는 없습니다. 예외가 유지되지 않으면 내가 게시 한 두 번째 이미지와 똑같으며 완벽한 이진 트리 라고도합니다 . 따라서 완벽한 이진 트리도 완전하고 완전하지만 그 반대는 아닙니다.
ALMOST COMPLETE BINARY TREE- 완전한 이진 트리 정의의 예외가 유지되면 거의 완전한 이진 트리 또는 거의 완전한 이진 트리라고합니다. 그것은 완전한 이진 트리의 한 유형일 뿐이지 만 더 명확하게 만들기 위해서는 별도의 정의가 필요합니다.
따라서 거의 완전한 이진 트리는 다음과 같이 보일 것입니다. 이미지에서 노드가 가능한 한 멀리 남아 있으므로 완전한 이진 트리의 하위 집합에 가깝습니다. 더 엄격하게 말하면 거의 완전한 이진 트리가 완전한 이진 트리입니다. 나무이지만 그 반대는 아닙니다. :
노드가 트리 방식으로 그려진 이진 트리를 고려하십시오. 이제 노드 번호를 위에서 아래로, 왼쪽에서 오른쪽으로 시작합니다. 완전한 트리에는 다음과 같은 속성이 있습니다.
n에 자식이 있으면 n보다 작은 번호의 모든 노드에는 자식이 두 개 있습니다.
n에 하나의 자식이있는 경우 왼쪽 자식이어야하며 n 미만의 모든 노드에는 두 개의 자식이 있어야합니다. 또한 n보다 큰 번호의 노드에는 자식이 없습니다.
n에 자식이 없으면 n보다 큰 번호의 노드에는 자식이 없습니다.
완전한 이진 트리를 사용하여 힙을 나타낼 수 있습니다. 간격없이 연속 메모리에서 쉽게 표현할 수 있습니다 (즉, 끝에 존재할 수있는 공간을 절약하기 위해 모든 배열 요소가 사용됨).
완전한 이진 트리는 완전한 이진 트리이지만 그 반대는 불가능하며 이진의 깊이가 n이면 아니오입니다. 전체 이진 트리의 노드 수는 (2 ^ n-1)입니다. 이진 트리에서 두 개의 자식을 가질 필요는 없지만 전체 바이너리에서는 모든 노드에 자식이 없거나 두 개 있습니다.
기본부터 시작하려면 이진 트리 자체를 이해하여 다른 유형을 이해하는 것이 매우 중요합니다.
트리는 다음과 같은 경우에만 이진 트리입니다.
– 하위 노드가 없을 수있는 루트 노드가 있습니다 (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이 아니 어서 이미지를 올릴 수 없어서 죄송합니다. 이것이 당신과 다른 사람들에게 도움이되기를 바랍니다!
이진 트리에 대한 제한된 경험에서 다음과 같이 생각합니다.
높이 'h'의 이진 트리를 고려해 보겠습니다. 이진 트리는 모든 잎이 시퀀스에서 누락 된 숫자없이 'h'또는 'h-1'높이에있는 경우 완전한 이진 트리라고합니다.
1
/ \
2 3
/ \
4 5
완전한 이진 트리입니다.
1
/ \
2 3
/ /
4 6
시퀀스에서 5 번 노드가 누락되어 완전한 이진 트리가 아닙니다.
모든 노드에 0 개 또는 2 개의 자식이 있으면 전체 이진 트리가 가득 차 있습니다. 완전한 이진 수의 리프 노드는 내부 노드 수에 1을 더한 L = l + 1입니다.
완전한 이진 트리 : 최하위 수준을 제외한 모든 수준이 완전히 채워지고 모든 리프 요소가 자식을 남겨 두어야하는 한 가지 중요한 요소가 있습니다. Strict Binary Tree :이 트리에서 리프가 아닌 모든 노드에는 자식이 없습니다. 즉, 왼쪽도 오른쪽도 아닙니다. 전체 이진 트리 : 모든 노드에는 자식 0 개 또는 자식 2 개 (단일 자식 없음)가 있습니다.