BinaryTree 배열로 표현
아래의 이진트리를 배열로 표현하면 트리의 Level 0 부터 시작하여 각 레벨에 속하는 원소들을 차례대로 Insert 해주면 된다. Root 노드는 idx 0 부터 시작하기 때문에 왼쪽 자식, 오른쪽 자식은 idx * 2 + 1, idx * 2 + 2
가 된다.
Root 노드의 시작을 idx 0 이 아닌 1 부터 시작하고 싶다면, idx * 2
, idx * 2 + 1
순서가 된다.
PreOrder, InOrder, PostOrder 순회
이진 트리를 순회하는 방법은 3가지
가 있다.
전위 순회 (PreOrder)
- 현재 노드를 부모 노드로 생각했을때
부모 노드 --> 왼쪽자식 노드 --> 오른쪽 자식 노드
순서로 방문
하는 방법 (주로 트리를 복사할때 사용)
중위 순회 (InOrder)
- 현재 노드를 부모 노드로 생각했을때
왼쪽자식 노드 --> 부모 노드 --> 오른쪽 자식 노드
순서로 방문
하는 방법 (이진 탐색 트리에서 정렬된 순서대로 값을 가져올때 사용)
후위 순회 (PostOrder)
- 현재 노드를 부모 노드로 생각했을때
왼쪽자식 노드 --> 오른쪽자식 노드 --> 부모 노드
순으로 방문
하는 방법 (트리 삭제에 자주 사용)
순회를 할 때 주목해야할 것은 노드를 방문하는것과 노드를 거쳐가는것은 아예 다르며, 현재 노드를 부모 노드를 생각해야한다는 것이다.