트리는 정점(Node)과 선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태이다.
트리를 구성하는 각 노드들을 찾아가는 방법을 운행법(Traversal)이라 한다.
산술식을 계산하기 위해 기억공간에 기억시키는 방법으로 이진 트리를 많이 사용한다. 이진 트리로 만들어진 수식을 인오더, 프리오더, 포스트오더로 운행하면 각각 중위(Infix), 전위(Prefix), 후위(Postfix) 표기법이 된다.
다음과 같이 Infix로 표기된 수식을 Prefix와 Postfix로 변환하시오,
X = A/B * (C+D) + E
- Prefix로 변환하기
- 연산 우선순위에 따라 괄호로 묶는다.
(X = (((A/B) * (C+D)) + E))- 연산자를 해당 괄호의 앞(왼쪽)으로 옮긴다.
=(X +(*(/(AB) +(CD)) E))- 필요없는 괄호를 제거한다.
=X +*/AB +CD E
- Postfix로 변환하기
- 연산 우선순위에 따라 괄호로 묶는다.
(X = (((A/B) * (C+D)) + E))- 연산자를 해당 괄호의 뒤(오른쪽)로 옮긴다.
(X (((AB)/ (CD)+)* E)+)=- 필요없는 괄호를 제거한다.
X AB/ CD+* E+=
다음과 같이 Postfix로 표기된 수식을 Infix로 변환하시오.
A B C - / D E F + * +
- Postfix는 Infix 표기법에서 연산자를 해당 피연산자 두 개의 뒤로 이동한 것이므로 연산자를 다시 해당 피연산자 두 개의 가운데로 옮기면 된다.
- 먼저 인접한 피연산자 두 개와 오른쪽의 연산자를 괄호로 묶는다.
((A (B C -) /) (D (E F +) *) +)- 연산자를 해당 피연산자의 가운데로 이동시킨다.
((A /(B - C)) +(D *(E + F)) )- 필요없는 괄호를 제거한다.
A /(B - C) +D *(E + F)
다음과 같이 Prefix로 표기된 수식을 Infix로 변환하시오.
- / A - B C * D + E F
- Prefix는 Infix 표기법에서 연산자를 해당 피연산자 두 개의 앞으로 이동한 것이므로 연산자를 다시 해당 피연산자 두 개의 가운데로 옮기면 된다.
- 먼저 인접한 피연산자 두 개와 왼쪽의 연산자를 괄호로 묶는다.
(+ (/ A (- B C)) (* D (+ E F)))- 연산자를 해당 피연산자 사이로 이동시킨다.
( ( A /(B - C)) +(D *(E + F)))- 필요없는 괄호를 제거한다.
A /(B - C) +D *(E + F)