Traverse
by vzufelt
HTML
<h3>
Assignment 12
</h3>
<br/> X value:
<input type="text" id="x" /> Y value:
<input type="text" id="y" />
<br/>
<input type='button' value='Enter' onclick='calc();' />
<br/>
<br/>
<div id='output'>
</div>
JavaScript
this.calc = function() {
var output = document.getElementById('output');
var x = document.getElementById('x').value.trim();
var y = document.getElementById('y').value.trim();
x = parseFloat(x);
y = parseFloat(y);
if (isNaN(x) || isNaN(y)) {
output.innerHTML = "Enter a number for X and Y.";
return;
}
var leaf3 = new leaf(3);
var leafx = new leaf("x");
var leaf5 = new leaf(5);
var leafy = new leaf("y");
var mult = new node("*", leaf5, leafy);
var add = new node("+", leafx, mult);
var mult2 = new node("*", leaf3, add);
var value = {};
value["x"] = x;
value["y"] = y;
var result = mult2.traverse(value);
output.innerHTML = "X = " + x + ", Y = " + y + ", Output = " + result;
};
function leaf(value) {
this.value = value;
}
function node(key, left, right) {
this.key = key;
this.left = left;
this.right = right;
}
leaf.prototype.traverse = function(value) {
if (isNaN(this.value)) {
return value[this.value];
}
return this.value;
};
node.prototype.traverse = function(value) {
var left = this.left.traverse(value);
var right = this.right.traverse(value);
var key = this.key;
if (key == '+') {
return left + right;
}
if (key == "-") {
return left - right;
}
if (key == '*') {
return left * right;
}
if (key == '/') {
return left / right;
}
return 0;
};