File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
yoonexample/src/main/java/tree/expressiontree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,40 @@ public ExpressionTreeImpl(char[] postfixExpression) {
27
27
28
28
@ Override
29
29
public int evaluateTree () {
30
+ return evaluateTree (this .root );
31
+ }
32
+
33
+ private int evaluateTree (TraversableBinaryTreeNode <Character > node ) {
34
+ TraversableBinaryTreeNode <Character > leftSubTree = node .getLeftSubTree ();
35
+ TraversableBinaryTreeNode <Character > rightSubTree = node .getRightSubTree ();
36
+
37
+ if (leftSubTree == null && rightSubTree == null ) {
38
+ return Character .getNumericValue (node .getData ()); // 단말 노드는 피연산자임
39
+ }
40
+
41
+ int op1 = 0 ;
42
+ int op2 = 0 ;
43
+ if (leftSubTree != null ) {
44
+ op1 = evaluateTree (leftSubTree );
45
+ }
46
+ if (rightSubTree != null ) {
47
+ op2 = evaluateTree (rightSubTree );
48
+ }
49
+
50
+ switch (node .getData ()) {
51
+ case '+' :
52
+ return op1 + op2 ;
53
+ case '-' :
54
+ return op1 - op2 ;
55
+ case '*' :
56
+ return op1 * op2 ;
57
+ case '/' :
58
+ if (op2 == 0 ) {
59
+ throw new ArithmeticException ("Can't be division by zero." );
60
+ }
61
+ return op1 / op2 ;
62
+ }
63
+
30
64
return 0 ;
31
65
}
32
66
You can’t perform that action at this time.
0 commit comments