bottom-up 보다는 직관적으로 이해하기 쉬운 top-down recursive 문제다. 탑-다운 인지 바톰-업 인지 보이면 그 다음부터는 수월하다.
# This is an input class. Do not edit.
class BinaryTree:
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
def evaluateExpressionTree(tree):
if not tree.left and not tree.right:
return tree.value
# if tree.value >= 0:
# return tree.value
**resultl = evaluateExpressionTree(tree.left)
resultr = evaluateExpressionTree(tree.right) **
if tree.value == -1:
return resultl+ resultr
elif tree.value == -2:
return resultl - resultr
elif tree.value == -3:
return resultl // resultr
elif tree.value == -4:
return resultl * resultr
어떤 숫자가 어떤 연산자에 해당하는지 주의하여 if elif 를 차례로 나열한다. 연산자는 current tree's value 이고, 연산하기 위해서는 children't values 가 필요하므로, 리컬전을 이용해서 값을 구하고 연산.