Assignment12

by zazagalaxy

HTML

<h1><center>Binary Trees</h1>
<h2><center>Assigment 12</h2>
<br>
<form>
  Enter x value:<br>
  <input type="text" id="x-value"><br>
  <br>
  Enter y value:<br>
  <input type="text" id="y-value"><br>
  <br>
  <input type="button" value="Enter" id="click">
</form>

<div id="output"></div>

CSS

#click {
  background-color: violet;
  color: black;
  margin-top: 10px;
  margin-bottom: 10px;
  width: 12em;
}
h1 {
  color: violet;
}
h2 {
  color: violet;
}
form {
  color: violet;
}
body {
  background-color: black;
}
div {
  color: violet;
}

JavaScript

var key = 0;
var array = [];
var errors = [];
var result, total, x, y;
document.getElementById("click").onclick = function() {
  myFormSubmit()
};

function myFormSubmit() {
  array = [];
	errors = [];
  x = document.getElementById("x-value").value;
  y = document.getElementById("y-value").value;

  try {
    if (x == "") throw "You didn't enter a x value.";
    if (isNaN(x)) throw "Enter a numeric value for x. You entered " + x;
    x = parseInt(x);
  } catch (err) {
    errors.push(err);
  }

  try {
    if (y == "") throw "You didn't enter a y value.";
    if (isNaN(y)) throw "Enter a numeric value for y. You entered " + y;
    y = parseInt(y);
  } catch (err) {
    errors.push(err);
  }
  document.getElementById('output').innerHTML = errors.join("<br>");
  if (errors.length == 0) {
    var tree = new BinarySearchTree();
    tree.insert(3);
    tree.insert("*");
    tree.insert("(");
    tree.insert(x);
    tree.insert("+");
    tree.insert(5);
    tree.insert("*");
    tree.insert(y);
    tree.insert(")");

    tree.preOrderTraverse(calculate_expression); 
  }
}

function BinarySearchTree() {
  var Node = function(key, value) {
    this.key = key;
    this.value = value;
    this.left = null;
    this.right = null;
  };
  var root = null;

  this.insert = function(value) {
    key++;
    var newNode = new Node(key, value);
    if (root === null) {
      root = newNode;
    } else {
      insertNode(root, newNode);
    }
  };

  
  this.preOrderTraverse = function(callback) {
    preOrderTraverseNode(root, callback);
  };
}

var insertNode = function(node, newNode) {
  if (newNode.key < node.key) {
    if (node.left === null) {
      node.left = newNode;
    } else {
      insertNode(node.left, newNode);
    }
  } else {
    if (node.right === null) {
      node.right = newNode;
    } else {
      insertNode(node.right, newNode);
    }
  }
};

var preOrderTraverseNode = function(node, callback) {
  if (node !== null) {
    callback(node); 
   ...