이진 트리
차수가 2 이하인 노드들로 구성된 트리
레벨 i에서 최대 노드의 수는 2^(i-1)
이진 트리에서 리프 노드의 개수가 n_0, 차수가 2인 노드 수가 n_2라 할 때, n_0 = n_2 + 1
트리의 운행법
트리를 구성하는 각 노드들을 찾아가는 방법을 운행법이라 한다
이진트리를 운행하는 방법은 산술식의 표기법과 연관성을 갖는다
- Proorder : Root > Left > Right
- Inorder : Left > Root > Right
- Postorder : Left > Right > Root
수식의 표기법
- 전위 표기법 : 연산자 > Left > Right
- 중위 표기법 : Left > 연산자 > Right
- 후위 표기법 : Left > Right > 연산자
Infix 표기를 Postfix나 Prefix로 바꾸기
예제) X = A/B*(C+D)+E
- Prefix로 변환
- 연산 우선순위에 따라 괄호로 묶기
(X=(((A/B)*(C+D))+E)) - 연산자를 해당 괄호의 앞(왼쪽)으로 옮긴다
= (X + ( * ( / (AB) + (CD))E)) - 괄호 제거
= X+* / AB + CDE
- 연산 우선순위에 따라 괄호로 묶기
- Postfix로 변환
- 연산 우선순위에 따라 괄호로 묶기
(X=(((A/B)*(C+D))+E)) - 연산자를 해당 괄호의 뒤(오른쪽)로 옮긴다
(X(((AB) / (CD) + * )E) + ) = - 괄호 제거
XAB / CD + * E + =
- 연산 우선순위에 따라 괄호로 묶기
Postfix나 Prefix로 표기된 수식을 Infix로 바꾸기
예제) ABC-/DEF+*+
- Postfix > Infix
- 먼저 인접한 피연산자 두 개와 오른쪽의 연산자를 괄호로 묶는다
((A(BC-)/)(D(EF+)*)+) - 연산자를 해당 피연산자의 가운데로 이동시킨다
((A / (B - C)) + (D * (E + F))) - 필요없는 괄호 제거
A / (B - C) + D * (E + F)
- 먼저 인접한 피연산자 두 개와 오른쪽의 연산자를 괄호로 묶는다
예제) +/A-BC*D+EF
- Prefix > Infix
- 먼저 인접한 피연산자 두 개와 왼쪽의 연산자를 괄호로 묶는다
(+(/A(-BC))(*D(+EF))) - 연산자를 해당 피연산자 사이로 이동시킨다
((A / (B - C)) + (D * (E + F))) - 필요없는 괄호 제거
A / (B - C) + D * (E + F)
- 먼저 인접한 피연산자 두 개와 왼쪽의 연산자를 괄호로 묶는다
'자격증 💳 > 정처기' 카테고리의 다른 글
[정처기] 통합 구현_XML(eXtensible Markup Language) (3) | 2024.04.15 |
---|---|
[정처기] 데이터 입출력 구현_정렬 (0) | 2024.04.15 |
[정처기] 데이터 입출력 구현_자료 구조 (0) | 2024.04.15 |
[정처기] 데이터 입출력 구현_스토리지 (0) | 2024.04.15 |
[정처기] 데이터 입출력 구현_데이터베이스 백업 (1) | 2024.04.15 |