트리(Tree)
계층적인 자료의 표현에 적합한 자료 구조 ex) 조직도, 가계도
지금까지 배운 선형 자료 구조들과 다르게 비선형 자료 구조
노드의 ‘부모/자식/형제’ 관계와 ‘조상(부모 이상)/자손’ 관계가 정의된다
계층에 따라 위부터 레벨이 나눠지며 트리의 높이는 최고 레벨 값이다
더 이상 자식이 없는 노드는 단말 노드이며 그렇지 않은 노드는 비단말 노드이다
자식 노드의 수가 해당 노드의 차수이며 트리의 차수는 노드 차수들 중 최대 차수이다
이러한 노드 구조들을 통틀어 포레스트(forest)라고 한다
이진 트리
서브트리는 공집합일 수 있으며 이진 트리는 순환적으로 정의된다
트리의 각 레벨에 노드가 꽉 차있다면 포화 이진 트리이다
* 단, 완전 이진트리의 경우 마지막 레벨 h에서는 노드가 좌측부터 순서대로 채워진다!
순회(traversal)
순회는 트리에 속하는 모든 노드를 한 번씩 방문하는 것이며,
선형 자료구조는 순회가 단순하지만 트리의 순회는 다양한 방법이 있다
레벨 순회는 노드를 레벨 순으로 검사한다
모르스 코드로 결정 트리를 응용해보자
힙 트리
힙(Heap)이란 완전이진트리를 기반으로 가장 큰(또는 작은) 값을 빠르게 찾도록 만들어진 자료 구조이다
허프만 코드로 힙 트리를 응용해보자
'Computer Science > Algorithm' 카테고리의 다른 글
[HUFS/자료구조] #10 그래프 (2) | 2021.12.09 |
---|---|
[HUFS/자료구조] #9 탐색 트리 (0) | 2021.11.25 |
[HUFS/자료구조] #7 정렬과 탐색 (2) | 2021.11.12 |
[HUFS/자료구조] #6 연결 리스트 (0) | 2021.10.21 |
[HUFS/자료구조] #5 큐와 덱 (2) | 2021.10.14 |