트리는 정점(Node,노드)과 선분(Branch,가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태입니다.
트리 관련 용어
노드 (Node)
근 노드 (Root Node)
디그리 (Degree)
단말 노드 (Terminal Node) = 잎 노드 (Leaf Node)
자식 노드 (Son Node)
부모 노드 (Parent Node)
형제 노드 (Brother Node, Siblings)
트리의 디그리
트리를 구성하는 각 노드들을 찾아가는 방법을 운행법이라고 한다.
이진 트리를 운행하는 방법은 산술식의 표기법과 연관성을 갖는다.
이진 트리의 운행법은 세가지가 있다.
산숙실을 계산하기 위해 기억공간에 기억시키는 방법으로 이진 트리를 많이 사용한다. 이진 트리로 만들어진 수식을 인오더, 프리오더, 포스트오더로 운행하면 가각 중위, 전위, 후위 표기법이 된다.
X = A / B * (C + D) + E
(X = (((A / B) * (C + D))+E)) : 연산 우선순위에 따라 괄호로 묶는다.
=(X+(*(/(A B)+(C D))E)) : 연산자를 해당 괄호 앞으로 옮긴다.
=X+*/AB+CDE : 필요 없는 괄호를 제거한다
X = A / B * (C + D) + E
(X = (((A / B) * (C + D))+E)) : 연산 우선순위에 따라 괄호로 묶는다.
(X(((A B)/(C D)+)*E)+)= : 연산자를 해당 괄호의 뒤로 옮긴다.
XAB/CD+*E+= : 필요 없는 괄호를 제거한다.
A B C - / D E F + * +
((A (B C -) /) (D (E F +) *) +) : 먼저 인접한 피연산자 두 개와 오른쪽 연산자를 괄호로 묶는다.
((A / (B - C)) + (D * (E + F))) : 연산자를 해당 피연산자의 가운데로 이동시킨다
A / (B - C) + D * (E + F) : 필요 없는 괄호를 제거한다.
- / A - B C * D + E F
(+ (/ A (- B C)) (* D (+ E F))) : 먼저 인접한 피연산자 두 개와 왼쪽 연산자를 괄호로 묶는다.
((A / (B - C)) + (D * (E + F))) : 연산자를 해당 피연산자의 가운데로 이동시킨다
A / (B - C) + D * (E + F) : 필요 없는 괄호를 제거한다.