Assignment 12

Binary Trees

by Jenni Meiklejohn

HTML

<h1><center> Assignment 12 <br> Binary Trees </center></h1> x:
<input type="number" id="x" value="2">
<br> y:
<input type="number" id="y" value="2">
<br>
<br>
<input type="button" value="Calculate (3*(x + 5*y))" id="input" onclick="createTree()">
<div id="output"></div>

JavaScript

function TNode() {

  var Node = function(parent, content) {
    this.parent = null;
    this.content = content;
    this.left = null;
    this.right = null;

  };
  var base = null;
  this.baseNode = function(content) {

    var _node = new Node(parent, content);
    if (base === null) {
      base = _node;
    } else {
      addNode(base, _node);
    }
  }

  this.order = function(_content) {
    tNode(base, _content);
  };
}

var addNode = function(node, _node) {
  if (_node.parent < node.parent) {
    if (node.left === null) {
      node.left = _node;
    } else {
      addNode(node.left, _node);
    }
  } else {
    if (node.right === null) {
      node.right = _node;
    } else {
      addNode(node.right, _node);
    }
  }
};

var tNode = function(node, _content) {
  if (node !== null) {
    _content(node);
    tNode(node.left, _content);
    tNode(node.right, _content);
  }
};

function calculate(node) {
  array.push(node);
  if (array.length == 9) {
    equals = array[0].content * (array[3].content + array[5].content * array[7].content);
    output = ("<br>Equation: 3*(x + 5*y)<br>" + "<br> x = " + x + "<br> y = " + y + "<br> output = " + equals);

    return document.getElementById('output').innerHTML = output;
  }
}

function createTree() {

  array = [];
  x = parseInt(document.getElementById("x").value);
  y = parseInt(document.getElementById("y").value);

  var tree = new TNode();
  tree.baseNode(3);
  tree.baseNode("*(");
  tree.baseNode("(");
  tree.baseNode(x);
  tree.baseNode("+");
  tree.baseNode(5);
  tree.baseNode("*");
  tree.baseNode(y);
  tree.baseNode(")");
  tree.order(calculate);

}