이진트리의 표현으로는, 배열과 연결리스트를 들 수 있다.
1) 배열
우선 1차원 배열에 노드를 저장한다. 자신의 번호를 가진 인덱스 위치에 저장해둔다. 이 때 인덱스 0번은 사용하지 않고 비워두고, 인덱스 1번부터 루트 노드를 저장한다.
n개의 노드를 가진 트리는 부모와 자식 노드의 인덱스 관계임을 볼 수 있다. 따라서 parent(i) : [i/2] if i != 1이 되고, leftChild(i) : 2i if 2i<= n, rightChild(i) : 2i+1 if 2i + 1<= n이 된다.
2) 연결 리스트
단순연결리스트를 이용하여 이진트리를 표현한다.
c코드로 작성하면 다음과 같이 진행된다.
typedef int BTData;
typedef struct BinaryTreeNode{
BTData data;
struct BinaryTreeNode *left, *right;
}
BinTree;
연결리스트로 트리를 구현할 시, 부모 노드로 가기 어려운 문제가 생긴다. 이는 parent field를 추가하여 해결 가능하다.
반응형
'Computer Science' 카테고리의 다른 글
[운영체제] Page fault 발생 시 처리 과정 (0) | 2024.01.20 |
---|---|
[운영체제] 동적 메모리 할당 문제, 메모리 단편화와 단편화 방식이 가지는 문제점 (0) | 2024.01.19 |
[운영체제] 스와핑(스와핑, 스와핑-입출력, 여러가지 스와핑, 모바일 시스템에서의 스와핑) (0) | 2024.01.18 |
[운영체제] 다단계 큐 스케줄링 / 다단계 피드백 큐 스케줄링 (0) | 2024.01.17 |
[컴퓨터구조론] I/O 주소지정 : 기억장치-사상 I/O, 분리형 I/O (0) | 2024.01.16 |