internal double rEval(Node node) { if ((node.GetType().Equals(typeof(VariableNode)))) { return (node as VariableNode).Value; } else if ((node.GetType().Equals(typeof(NumNode)))) { return (node as NumNode).Value; } else if ((node.GetType().Equals(typeof(OperatorNode)))) { if ((node as OperatorNode).value == "+") return rEval((node as OperatorNode).left) + rEval((node as OperatorNode).right); else if ((node as OperatorNode).value == "-") return rEval((node as OperatorNode).left) - rEval((node as OperatorNode).right); else if ((node as OperatorNode).value == "/") return rEval((node as OperatorNode).left) / rEval((node as OperatorNode).right); else if ((node as OperatorNode).value == "*") return rEval((node as OperatorNode).left) * rEval((node as OperatorNode).right); else return 0; } else return 0; }
private bool Search(Node next, string varName, double varValue) { if ((next.GetType().Equals(typeof(VariableNode))) && (next as VariableNode).value == varName) { (next as VariableNode).Value = varValue; return true; } else if ((next.GetType().Equals(typeof(OperatorNode)))) { Search((next as OperatorNode).left, varName, varValue); Search((next as OperatorNode).right, varName, varValue); } else { return false; } return false; }