Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

데이터 구조의 토너먼트 트리, 승자 트리 및 패자 트리


여기에서 토너먼트 트리, 승자 및 패자 트리를 볼 수 있습니다. 토너먼트 트리는 n개의 외부 노드와 n – 1개의 내부 노드가 있는 완전한 이진 트리입니다. 외부 노드는 플레이어를 나타내고 내부 노드는 두 플레이어 간의 경기 승자를 나타냅니다. 이 트리는 선택 트리라고도 합니다.

토너먼트 트리에는 몇 가지 속성이 있습니다. 다음과 같습니다 -

  • 이 나무는 뿌리가 있습니다. 따라서 트리의 링크와 부모에서 자식으로의 경로를 지정하고 부모가 없는 고유한 요소가 있습니다.

  • 부모 값은 모든 비교 연산자에 대해 해당 노드보다 작거나 같으며, 부모와 자식의 상대 값이 트리 전체에서 변하지 않는 한 사용할 수 있습니다.

  • 노드 수가 2의 거듭제곱이 아닌 트리에는 구멍이 있습니다. 구멍은 나무의 어느 곳에나 있을 수 있습니다.

  • 이 트리는 바이너리 힙의 적절한 일반화입니다.

  • 루트는 토너먼트의 전체 승자를 나타냅니다.

토너먼트 트리에는 두 가지 유형이 있습니다 -

  • 우승자 트리

  • 느슨한 나무

승자 트리

승자 트리는 각 노드가 두 자식 중 더 작거나 더 큰 것을 나타내는 완전한 이진 트리이며 승자 트리라고 합니다. 루트는 트리의 가장 작거나 큰 노드를 보유하고 있습니다. 토너먼트 트리의 승자는 모든 시퀀스에서 가장 작거나 큰 n 키입니다. 위너 트리가 O(log n) 시간에 형성될 수 있음을 쉽게 알 수 있습니다.

− 3, 5, 6, 7, 20, 8, 2, 9와 같은 키가 있다고 가정합니다.

데이터 구조의 토너먼트 트리, 승자 트리 및 패자 트리

느슨한 나무

느슨한 트리는 n개의 외부 노드와 n – 1개의 내부 노드가 있는 n명의 플레이어에 대한 완전한 이진 트리입니다. 일치하는 쪽이 더 느슨한 쪽이 내부 노드에 저장됩니다. 그러나 이 전체 승자는 tree[0]에 저장됩니다. 느슨한 사람은 해당 노드에서 일치의 느슨한 사람을 저장하는 대체 표현입니다. 루저의 장점은 승자 트리가 출력된 후 트리를 재구성하려면 이 경로에 있는 노드의 형제가 아닌 리프에서 루트로 경로의 노드를 검사하는 것으로 충분하다는 것입니다.

− 더 느슨한 트리를 만들려면 먼저 승자 트리를 만들어야 합니다.

10, 2, 7, 6, 5, 9, 12, 1과 같은 키가 있다고 가정합니다. 따라서 먼저 최소 승자 트리를 만듭니다.

데이터 구조의 토너먼트 트리, 승자 트리 및 패자 트리

이제 각 내부 노드에 더 루즈한 경기를 저장할 것입니다.

데이터 구조의 토너먼트 트리, 승자 트리 및 패자 트리