데이터 구조의 트리 유형은 무엇입니까?


최상의 답변

트리 데이터 구조에는 여러 유형이 있습니다. 그중 일부는

  1. 바이너리 트리 : 트리 구조에서 가장 기본적인 기본입니다. 각 노드는 최대 두 개의 자식을 가질 수 있습니다. 완벽한 바이너리 트리는 모든 내부 노드에 두 개의 자식 이있는 바이너리 트리입니다. 잎은 동일한 깊이 또는 동일한 레벨을 갖습니다. 전체 바이너리 트리 (때로는 적절한 [15] 또는 평면 이진 트리라고도 함) 트리의 모든 노드에 0 또는 2 개의 자식이있는 트리입니다. 완료 이진 트리 모든 레벨 (마지막 레벨 제외)이 완전히 채워지고 마지막 레벨의 모든 노드는 가능한 한 맨 왼쪽에 있습니다. 무한 완료 바이너리 트리, 모든 노드에는 2 개의 하위 항목이 있습니다.
  2. 바이너리 검색 트리 : BST는 특정 속성이있는 바이너리 트리입니다. 예를 들어, 주어진 노드의 왼쪽 자식은 주어진 노드보다 작은 값을 포함하고 오른쪽 자식은 주어진 노드보다 큰 노드를 포함합니다.
  3. AVL 트리 또는 높이 균형 이진 트리 : 왼쪽과 오른쪽 하위 트리의 높이 차이가 최대 1이 될 수있는 이진 트리의 변형입니다. 언제든지 둘 이상 차이가 나면 재조정이 수행됩니다. 이 속성을 복원하십시오. 조회, 삽입 및 삭제는 모두 평균 및 최악의 경우 모두 O (log n) 시간이 걸립니다. 여기서 n은 작업 전 트리의 노드 수입니다.
  4. Red-Black 트리 : AVL 트리와 유사한 이진 트리의 또 다른 변형으로 자체 균형 이진 검색 트리입니다. 이 트리에서 노드는 빨간색 또는 검은 색으로 표시됩니다.
  5. 스플레이 트리 : 스플레이 트리는 자체 조정 이진 검색 트리입니다. 최근에 액세스 한 요소는 다시 빠르게 액세스 할 수있는 추가 속성입니다. 이진 검색 트리의 모든 일반 작업은 splaying이라는 하나의 기본 작업과 결합됩니다. 특정 요소에 대해 트리를 분할하면 트리가 재 배열되어 요소가 트리의 루트에 배치됩니다.
  6. N-ary 트리 : 이 트리에서는 바이너리 트리의 제한이 제거되었습니다. 여기서 노드는 최대 n 개의 자식을 가질 수 있습니다. 이진 트리와 마찬가지로 전체, 완전 또는 완벽한 n- 항 트리가 될 수 있습니다. N-ary는 숲으로 알려진 시간입니다.
  7. Trie Structure : 컴퓨터 과학에서는 디지털 트리라고도하며 때로는 기수라고도하는 트리입니다. 트리 또는 접두사 트리 (접두사로 검색 할 수 있음)는 키가 일반적으로 문자열 인 동적 집합 또는 연관 배열을 저장하는 데 사용되는 정렬 된 트리 데이터 구조입니다. 노드의 모든 하위 항목에는 해당 노드와 관련된 문자열의 공통 접두사가 있으며 루트는 빈 문자열과 연결됩니다.
  8. 접미사 트리 : 시도와 접미사 트리는 밀접한 관련이 있습니다. 접미사 트리 (PAT 트리 또는 이전 형식에서 위치 트리라고도 함)는 주어진 텍스트의 모든 접미사를 키로 포함하고 텍스트의 위치를 ​​값으로 포함하는 압축 된 트리입니다. 접미사 트리를 사용하면 많은 중요한 문자열 작업을 특히 빠르게 구현할 수 있습니다.
  9. 허프만 트리 : 허프만 트리는 압축에 널리 사용되는 빈도로 정렬 된 바이너리 트리입니다. 데이터. Huffman 트리는 발생 빈도에 따라 긴 텍스트에 짧은 코드 단어를 할당하도록 구성됩니다.
  10. 힙 구조 [제안 된대로 편집 ] : 힙 구조는 특정 순서 특성을 가진 널리 사용되는 또 다른 트리 구조입니다. 힙에는 최소 힙과 최대 힙의 두 가지 유형이 있습니다. 최소 힙에서 노드의 부모는 모든 자식의 값보다 작아야합니다. 마찬가지로 최대 힙에서 상위는 항상 모든 하위에 비해 더 큰 값을 갖습니다. 힙의 일반적인 구현 중 하나는 각 상위가 최대 2 개의 하위를 가질 수있는 바이너리 힙입니다.

기타 인기있는 트리 구조에는 B가 포함되지만 전부는 아닙니다. -Tree, B +-tree, R-Tree, Counted-B Tree, KD 트리 (또는 K- 차원 BST), 의사 결정 트리 (a n 항 트리 변형), Markel 트리, Fenwick 트리 (또는 바이너리 인덱스 트리), 범위 트리

답변

  • 종속성 트리를 형성하여 코드로 템플릿.

이제 복잡한 사용 사례를 해결하기 위해 트리를 데이터 구조로 사용하는 방법을 자세히 설명하기 위해 5 분 동안 기다려주십시오.

시나리오를 설명하기 위해 토큰 기반 인증을 통해 API에서 데이터를 가져 오는 간단한 예를 들어 보겠습니다.

span>

따라서이 위업을 달성하려면

  • 먼저 사용자 이름, 비밀번호 및 테넌트 정보를 얻고 API를 호출하여 토큰을 가져옵니다.
  • 그런 다음 가져온 토큰을 요청 헤더에 전달하여 실제 API를 호출합니다.

이제는 매우 간단한 시나리오이지만 체인을 실행해야 할 때 상황이 매우 복잡해집니다. 10 개의 API가 서로 종속되어 있습니다.

이 종속성 트리 접근 방식을 고안 한 곳입니다.

먼저 이와 같은 템플릿

이제 다음과 같은 종속성 트리를 형성합니다.

$ {}로 정의 된 모든 것은 다른 변수 출력에 의존합니다.

ResourceOps는 실행될 API를 의미합니다.

이렇게 종속성 트리가 생성됩니다.

  • 독립적이고 루트에 연결합니다.
  • 그런 다음 리소스 작업을 수행하고 루트 노드에 연결된 값에 따라 달라진다는 것을 이해합니다. 따라서 루트에서 분리 한 다음 새 노드에 연결합니다.
  • 모든 리소스 작업에 동일한 작업이 수행됩니다. 출력.

종속성 트리를 생성하면 리프 노드로 실행 한 다음 리프 노드 실행 결과와 함께 상위 노드에 도달 한 다음 상위 노드에 도달 할 때까지 “부모 및 상위 노드에 도달합니다.

최상위 노드에 도달하면 결과를 얻고 http 성공 응답으로 반환합니다.

실행 중에 오류가 있으면 읽을 수있는 방식으로 오류 응답을 반환합니다.

p>

나는 조금씩 설명하지 않았다고 생각하지만, 그 방법을 강조하고 싶습니다. 개발자가 코드를 작성하지 않고도 동적 작업이 실행되도록 트리 데이터 구조의 실제 문제를 해결했습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다