Search
Duplicate
🚥

이진 트리의 구현과 순회 알고리즘

개념
루트 노드를 중심으로 두 개의 서브 트리로 나뉘며, 그 서브 트리도 이진 트리인 형태다.
이진 트리는 공노드도 허용하는데, 루트 노드에 자식 노드가 하나만 있더라도 나머지 자식 노드의 자리에 공노드가 있다고 생각한다.
트리는 배열이나 연결리스트로 구현하는 것이 보편적이다.
배열로 트리를 구현할 때는, 노드 넘버링의 용이성을 위해서 통상적으로 인덱스 1번부터 시작한다.
이진 트리의 종류
전체 이진 트리(Full Binary Tree) : 이진트리가 완전히 차있는 것이다.
완전 이진 트리(Complete Binary Tree) : 이진트리가 왼쪽부터 차곡차곡 쌓인 것이다.
순회
이진 트리의 모든 노드를 방문하는 것이다.
종류
중위 순회
left - root - right
후위 순회
left - right - root
전위 순회
root - left - right
구현
이진 트리를 구현할 때는 배열이나 연결리스트 등을 이용하는 것이 보편적이다.
이진 트리의 길이를 알고 있다면 배열, 길이를 알기 힘들다면 연결리스트가 나을 것 같다.
연결리스트
public static class Node { private T data; private Node left; private Node right; public Node(T data) { this.data = data; } }
C#
복사
배열
char[] arr = new char[(int) Math.pow(2, 27)]; arr[1] = 'A';
C#
복사