66 lines
1.7 KiB
Java
66 lines
1.7 KiB
Java
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class Node {
|
|
private String value;
|
|
private List<Node> subNodes;
|
|
|
|
public Node(String value) {
|
|
this.value = value;
|
|
this.subNodes = new ArrayList<>();
|
|
}
|
|
|
|
public String getValue() {
|
|
return value;
|
|
}
|
|
|
|
public void setValue(String value) {
|
|
this.value = value;
|
|
}
|
|
|
|
public List<Node> getSubNodes() {
|
|
return this.subNodes;
|
|
}
|
|
|
|
public boolean addSubNode(Node node) {
|
|
return subNodes.add(node);
|
|
}
|
|
|
|
public boolean remSubNode(Node node) {
|
|
return subNodes.remove(node);
|
|
}
|
|
|
|
public int getResult(Map<String, Integer> ids) {
|
|
if (subNodes.size() < 2) {
|
|
try {
|
|
int n = Integer.parseInt(value);
|
|
return n;
|
|
} catch (NumberFormatException e) {
|
|
return ids.get(value);
|
|
}
|
|
} else {
|
|
switch (value) {
|
|
case "+":
|
|
return subNodes.get(0).getResult(ids) + subNodes.get(1).getResult(ids);
|
|
case "-":
|
|
return subNodes.get(0).getResult(ids) - subNodes.get(1).getResult(ids);
|
|
case "/":
|
|
return subNodes.get(0).getResult(ids) / subNodes.get(1).getResult(ids);
|
|
case "x":
|
|
return subNodes.get(0).getResult(ids) * subNodes.get(1).getResult(ids);
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
public String showNode() {
|
|
if (subNodes.size() < 2) {
|
|
return value.toString();
|
|
} else {
|
|
return "(" + subNodes.get(0).showNode() + value.toString() + subNodes.get(1).showNode() + ")";
|
|
}
|
|
}
|
|
}
|