삼나무
Ternary tree컴퓨터 과학에서 3번째 트리는 각 노드가 최대 3개의 하위 노드를 갖는 트리 데이터 구조로 보통 "좌", "중간", "우측"으로 구분된다.자녀가 있는 노드는 상위 노드로서 하위 노드는 부모 노드에 대한 참조를 포함할 수 있다.트리 외부에는 "루트" 노드(모든 노드의 상위 노드)에 대한 참조가 존재하는 경우가 많다.데이터 구조의 모든 노드는 루트 노드에서 시작하여 왼쪽, 중간 또는 오른쪽 하위 노드에 대한 참조를 반복적으로 추적함으로써 도달할 수 있다.
테르나리 나무는 테르나리 서치 트리와 테르나리 힙을 구현하는 데 사용된다.
정의
- 방향ed Edge - 부모에서 자식까지의 링크.
- 루트 - 부모가 없는 노드.뿌리깊은 나무에는 적어도 하나의 루트 노드가 있다.
- 리프 노드 - 하위 노드가 없는 모든 노드.
- 상위 노드 - 지시된 가장자리로 하위 또는 하위 노드에 연결된 모든 노드.
- Child Node(하위 노드) - 지시된 에지로 상위 노드에 연결된 모든 노드.
- 깊이 - 루트부터 노드까지의 경로 길이.주어진 깊이에서 모든 노드의 집합을 트리의 수준이라고 부르기도 한다.루트 노드는 깊이 0에 있다.
- 높이 - 루트부터 트리에서 가장 깊은 노드까지의 경로 길이.노드(뿌리)가 하나만 있는 나무(뿌리)의 높이는 0이다.예제 다이어그램에서 트리의 높이는 2이다.
- 형제 - 동일한 상위 노드를 공유하는 노드.
- node p는 q에서 루트까지의 경로에 존재하는 노드 q의 조상이다.노드 q는 p의 후예라고 불린다.
- 노드의 크기는 자신을 포함한 후손의 수입니다.
삼나무의 특성
- 최대 노드 수
– 을(를) 삼나무 높이로 한다.
– (h) 을(를) 높이 h의 3차 트리에 있는 최대 노드 수로 설정
h | M(h) |
---|---|
0 | 1 |
1 | 4 |
2 | 13 |
3 | 40 |
– ( )= 1+ + 9+ + ⋯+ h= i= 0 = h + - M+ }}}}}}}}}}}}}}}}:{2}}:22}}:
– 높이 h의 모든 트리에는 최대 + 1- 2 }}개의 노드가 있다.
- 노드 이(가) TREE[ 을(를) 점유하는 경우, 왼쪽 차일드는 TREE[ - 에 저장된다
- Mid Child는 TREE[ 에 저장되어 있다
- Right Child는 TREE[ + 에 저장된다
공통작업
삽입
노드는 3개의 다른 노드 사이에 있는 3개의 트리 사이에 삽입하거나 외부 노드 뒤에 추가할 수 있다.Ternary 트리에서 삽입된 노드는 어느 자식인지 지정된다.
외부 노드
추가되는 외부 노드가 노드 A라고 한다.노드 A 다음에 새 노드를 추가하기 위해 A는 새 노드를 하위 노드 중 하나로 할당하고 새 노드는 노드 A를 상위 노드로 할당한다.
내부 노드
내부 노드에 대한 삽입은 외부 노드보다 복잡하다.내부 노드가 노드 A이고 노드 B가 A의 자식이라고 한다.(삽입이 오른쪽 아이를 삽입하는 것이라면 B는 A의 오른쪽 자식이고, 마찬가지로 왼쪽 아이 삽입이나 중간 아이와 유사하게)A는 자신의 자식을 새 노드에 할당하고, 새 노드는 그 부모를 A에 할당한다.그런 다음 새 노드는 자식을 B에 할당하고, B는 부모를 새 노드로 할당한다.
삭제
삭제는 트리에서 노드를 제거하는 과정이다.3차 트리의 특정 노드만 모호하지 않게 제거할 수 있다.
하위 항목이 0개 또는 1개인 노드
삭제할 노드가 노드 A라고 가정하십시오.노드에 자식(외부 노드)이 없는 경우, A의 부모의 자식을 null로, A의 부모를 null로 설정하여 삭제가 이루어진다.자녀가 1명일 경우 A씨 자녀의 부모를 A씨 부모로 설정하고 A씨 부모의 자녀를 A씨 자녀로 설정한다.
다른 나무와의 비교
아래 사진은 12개의 2글자를 나타내는 바이너리 검색 트리 입니다.왼쪽 하위의 모든 노드는 값이 작은 반면 오른쪽 하위의 모든 노드는 모든 노드에 대한 값이 더 크다.검색은 뿌리부터 시작한다."ON"이라는 단어를 찾기 위해 "IN"과 비교하고 올바른 가지를 취한다.모든 비교는 두 단어의 각 문자에 접근할 수 있었다.
에서 / \ be of / \ / \ \ as as as or \ \ \ \ / \ \ as he on it to.
디지털 검색은 문자열 문자를 문자별로 저장하려고 한다.다음 그림은 12개의 단어의 같은 집합을 나타내는 나무 입니다.
_ _ _ _ _ _ _ _ _ / \ / \ \ a b h i o t / \ / \ / \ / \ / \ \ \ \ e e n s f n r o에 있거나 또는 \ \ \ \ \ a b h i o에 있거나 또는 \에 있거나.
각 입력 단어는 그것을 나타내는 노드 아래에 표시된다.소문자를 나타내는 나무에서 각 노드는 26방향 분기를 가진다.검색은 매우 빠르다: "IS"에 대한 검색은 루트에서 시작하여 "I" 분기와 "S" 분기를 차례로 선택한 다음 원하는 노드에서 끝난다.모든 노드에서 어레이 요소에 액세스하여 null을 테스트하고 분기를 취한다.
i / \ / \ b s o / \ \ a e h n t t \ / \ y e f r o \ t
위 사진은 같은 세트의 12개 단어에 대한 균형 잡힌 3차 검색 트리 입니다.낮은 포인터와 높은 포인터들은 각진 선으로, 같은 포인터들은 수직선으로 표시된다."IS"라는 단어에 대한 검색은 루트부터 시작하여 동등한 아동을 값 "S"가 있는 노드로 진행하며, 두 번의 비교 후에 거기서 멈춘다."AX"를 검색하면 첫 번째 문자 "A"와 세 번째 문자 "X"와 두 번째 문자 "X"를 비교한 후 해당 단어가 트리에 없다고 보고한다.[1]
3차 나무의 예
- 3차 검색 트리
- 3차 힙
- 모든 원시 피타고라스 삼쌍을 포함하는 두 개의 무한 삼쌍나무가 원시 피타고라스 삼쌍을 생성하는 나무와 공식에 설명되어 있다.두 나무의 루트 노드는 세 배[3,4,5][2]를 포함한다.