티스토리 뷰
주의 사항!
- 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
- 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
- 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.
앞서 수식 트리를 구현할 때 수식 트리를 계산하는 함수는 소개하지 않았습니다. 그때 제가 소개했던 것은 제가 직접 구현한 함수였습니다. 이제 책에서는 수식 트리를 어떻게 구현하고 있는지 소개하겠습니다.
int EvaluateExpTree(BTreeNode* bt)
{
int op1, op2;
if (GetLeftSubtree(bt) == NULL && GetRightSubTree(bt) == NULL)
{
return GetData(bt);
}
op1 = EvaluateExpTree(GetLeftSubTree(bt));
op2 = EvaluateExpTree(GetRightSubTree(bt));
switch (GetData(bt))
{
case '+':
return op1 + op2;
case '-':
return op1 - op2;
case '*':
return op1 * op2;
case '/':
return op1 / op2;
}
return 0;
}
먼저 노드의 주소를 입력받아서 해당 노드의 자식 노드가 존재하지 않으면 해당 노드의 data를 반환합니다. 그리고 자식 노드가 있으면 해당 자식 노드의 주소를 인자로 주어 함수를 재귀적으로 호출합니다. op1과 op2가 구해지면 연산을 수행하고 결과를 반환합니다.
'공부 일지 > 자료구조 공부 일지' 카테고리의 다른 글
Chapter 09. 힙의 구현과 우선순위 큐의 완성 (0) | 2021.03.18 |
---|---|
Chapter 09. 우선순위 큐의 이해 (0) | 2021.03.18 |
Chapter 08. 수식 트리(Expression Tree)의 구현 (0) | 2021.03.17 |
Chapter 08. 이진 트리의 순회 (0) | 2021.03.16 |
Chapter 08. 이진 트리의 구현 (0) | 2021.03.16 |