Assignment 12 Binary trees

by austinmillett

HTML

<!-- Heading 1 -->
<h2> Austin Millett </h2>

<!-- Heading 2 -->
<h3> Assignment 12 - Binary Trees </h3>

<!-- Textbox  1 -->
Please enter a X value:
<input type = "textbox" id = "xValue" /> <br> <br>

<!-- Textbox 2 -->
Please enter a Y value:
<input type = "textbox" id = "yValue" /> <br> <br>

<!-- Button for "Submit" -->
<input type = "button"  id = "submit" value = "Submit" onclick = "calc();" /> <br> <br>

<!-- Div for output -->
<div id = "output"> </div>

CSS

/* Design for "Submit" button */
#submit {
background-color: black; 
border: 2px solid; 
color: white;
padding: 4px 8px; 
text-align: center; 
font-size: 15px; 
}

JavaScript

this.calc = function() {
var x = document.getElementById("xValue").value.trim();
var y = document.getElementById("yValue").value.trim();
x = parseFloat(x);
y = parseFloat(y);
if (isNaN(x) || isNaN(y)) {
output.innerHTML = "You did not enter a numeric value 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 values = {};
values["x"] = x;
values["y"] = y;
var result = mult2.traverse(values);

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(values) {
if (isNaN(this.value)) {
return values[this.value];
}
return this.value;
};

node.prototype.traverse = function(values) {
var left = this.left.traverse(values);
var right = this.right.traverse(values);
var key = this.key;

// "Addition, Subtraction, Multiplication, Division"
if (key == '+') {
return left + right;
}
if (key == "-") {
return left - right;
}
if (key == '*') {
return left * right;
}
if (key == '/') {
return left / right;
}
return 0;
};

// Output 
var output = document.getElementById("output");