이진트리 예제

이진트리 예제

참고: 노드 값은 트리의 루트 노드에 대한 참조가 함수에 전달되기 전에 이진 검색 트리에 삽입됩니다. 이진 검색 트리에서 노드의 왼쪽 분기의 모든 노드는 노드 값보다 적습니다. 오른쪽 분기의 모든 값은 노드 값보다 큽합니다. 모든 노드에 0 또는 2자식이 있는 경우 전체 이진 트리 이진 트리가 가득 차 있습니다. 다음은 전체 이진 트리의 예입니다. 또한 전체 이진 트리는 나뭇잎을 제외한 모든 노드에 두 개의 자식이 있는 이진 트리라고 말할 수 있습니다. 그런 다음 일반적으로 루트라고 하는 트리의 시작 노드를 추가해 보겠습니다: “이진 검색 트리”(BST) 또는 “정렬된 이진 트리”는 노드가 순서대로 정렬되는 이진 트리의 유형입니다: 각 노드에 대해 왼쪽 하위 트리의 모든 요소는 노드()보다 큽니다. 위에 표시된 트리는 이진 검색 트리입니다- “루트” 노드는 5이고 왼쪽 하위 트리 노드(1, 3, 4)는 <= 5이고 오른쪽 하위 트리 노드(6, 9)는 5입니다. 재귀적으로 각 하위 트리는 이진 검색 트리 제약 조건도 준수해야 합니다.

문제의 정확한 문구에 대 한 조심 — “이진 검색 트리” “이진 트리”와 다릅니다. 완전한 이진 트리에서 노드의 폭 인덱스 (i – (2d – 1)))는 루트에서 통과 명령으로 사용할 수 있습니다. d가 루트 (d = log2 (i +1)에서 노드의 거리이며, 문제의 노드는 루트 자체 (d > 0)가 아닌 비트 d – 1에서 시작하여 왼쪽에서 오른쪽으로 비트로 읽는다. 폭 인덱스가 비트 d – 1에서 마스크되면 비트 값 0과 1은 각각 왼쪽 또는 오른쪽으로 스텝하는 것을 의미합니다. 이 프로세스는 더 이상 없을 때까지 오른쪽의 다음 비트를 연속적으로 확인하여 계속됩니다. 가장 오른쪽 비트는 원하는 노드의 부모에서 노드 자체로의 최종 통과를 나타냅니다. 전체 이진 트리를 이 방식으로 반복하는 것과 해당 형제/s에 대한 포인터/s를 갖는 각 노드 간에는 시공간 적 대립이 있습니다. combinatorics에서 하나는 주어진 크기의 전체 이진 트리의 수를 계산하는 문제를 고려한다. 여기서 나무는 노드에 연결된 값이 없으며(이것은 가능한 트리 수를 쉽게 결정된 계수로 곱할 뿐이며, 나무는 구조로만 구별됩니다.) 그러나 모든 노드의 왼쪽 및 오른쪽 자식이 구별됩니다(다른 트리인 경우 서로 교환하면 원래 노드와 구별되는 트리가 생성됩니다). 트리의 크기는 내부 노드(자식이 두 개 있는 노드)의 번호 n으로 이동합니다. 다른 노드는 리프 노드이며 그 중 n + 1이 있습니다. 크기 n의 이러한 이진 트리의 수는 n 이진 연산자 (내부 노드를 나타내는)로 구분 된 n + 1 기호 (잎을 나타내는)의 문자열을 완전히 괄호하는 방법의 수와 같으며 각 함수 하위 식을 결정합니다.

연산자. 예를 들어 n = 3의 경우 X X와 같은 문자열을 괄호해야 합니다 . 뿌리 트리는 자연스럽게 레벨 개념(루트로부터의 거리)을 부여하므로 모든 노드에 대해 자식의 개념은 아래 레벨에 연결된 노드로 정의될 수 있습니다. 이러한 자식(예: 평면에 그리기)을 정렬하면 왼쪽 자식과 오른쪽 자식을 구별할 수 있습니다. [13] 그러나 이것은 여전히 왼쪽이 있지만 오른쪽자식이 아닌 오른쪽 자식이 있는 노드를 구별하지 는 않습니다.

0

You may also like