매일 사용하는 트리 구조의 또 다른 예는 파일 시스템입니다. 파일 시스템에서 디렉터리 또는 폴더는 트리로 구성됩니다. 그림 2는 유닉스 파일 시스템 계층 구조의 작은 부분을 보여 줍니다. 이제 스택 및 큐와 같은 선형 데이터 구조를 연구하고 재귀에 대한 몇 가지 경험을 쌓았으니 트리라는 공통 데이터 구조를 살펴보겠습니다. 나무는 운영 체제, 그래픽, 데이터베이스 시스템 및 컴퓨터 네트워킹을 포함한 컴퓨터 과학의 많은 분야에서 사용됩니다. 나무 데이터 구조는 식물 사촌과 많은 공통점이 있습니다. 트리 데이터 구조에는 루트, 분기 및 나뭇잎이 있습니다. 자연나무와 컴퓨터 과학의 나무의 차이점은 나무 데이터 구조가 루트를 맨 위에 있고 아래쪽에 나뭇잎이 있다는 것입니다. 세그먼트 트리 사용: 먼저 세그먼트 트리의 노드에 저장해야 하는 사항을 파악합니다. 질문은 $$l$$$에서 $$r$$의 간격으로 합계를 요청하므로 각 노드에서 노드로 표시되는 해당 간격의 모든 요소의 합계를 합산합니다. 다음으로 세그먼트 트리를 빌드합니다. 아래 주석이 있는 구현은 건물 프로세스를 설명합니다. 세트 1의 이진 트리 소개와 세트 2의 이진 트리의 속성에 대해 설명했습니다.
이 게시물에서는 일반적인 유형의 바이너리에 대해 설명합니다. 퇴화(또는 병리학적) 트리 모든 내부 노드에 하나의 자식이 있는 트리입니다. 이러한 트리는 연결된 목록과 성능면에서 동일합니다. 나무가 가장 기본적인 예 중 하나인 상호 재귀(개수)를 통해 트리가 값과 포리스트(자식의 하위 트리)로 구성된 포리스트(트리 목록)의 관점에서 정의할 수 있습니다. , 세그먼트 트리를 나타내는 데 사용할 수 있습니다. 세그먼트 트리를 빌드하기 전에 세그먼트 트리의 노드에 저장해야 하는 사항을 파악해야 합니다. 예를 들어, 질문이 인덱스 $$L$$에서 $$R$$에서 배열의 모든 요소의 합계를 찾는 경우 각 노드(리프 노드 제외)에서 자식 노드의 합계가 저장됩니다. (부분) 대수 (X, 부모)로 트리의 식은 부모 포인터를 사용하여 트리 구조의 구현을 직접 따릅니다. 일반적으로 루트 노드에 부모가 정의되지 않은 부분 버전이 사용됩니다. 그러나 일부 구현 또는 모델에서도 부모(r) = r 순환성이 설정됩니다. 주목할 만한 예: 노드의 높이는 해당 노드에서 리프에 이르는 가장 긴 하향 경로의 길이입니다. 루트의 높이는 트리의 높이입니다.
노드의 깊이는 루트에 대한 경로의 길이(즉, 루트 경로)입니다. 이것은 일반적으로 다양한 자기 균형 나무, 특히 AVL 나무의 조작에 필요합니다. 루트 노드는 깊이 0이고, 리프 노드는 높이 0을 가지며, 단일 노드(따라서 루트와 리프 모두)만 있는 트리에는 깊이와 높이 0이 있습니다. 종래, 빈 트리 (노드가없는 나무, 이러한 허용되는 경우)는 높이 -1을 가지고있다. 이진 검색 트리의 중요한 속성은 이진 검색 트리 의 값이 왼쪽 자식의 자손 값보다 크지만 오른쪽 자식의 자손 값보다 작다는 것입니다.” 세 번째 속성은 각 리프 노드가 고유하다는 것입니다. 우리는 나무의 뿌리에서 동물의 왕국의 각 종을 고유하게 식별하는 잎까지의 경로를 지정할 수 있습니다. 예를 들어, Animalia (오른쪽 살로) 화음 (오른쪽 화살표) 포유류 (오른쪽 화살표) 펠리대 (오른쪽 화살표) 펠리스 (오른쪽 화살표) 국내.