# Evaluating an arithmetic expression from a binary tree

Let's say I have a Binary Tree that looks like

        +
2       *
5   8


I've written a function to traverse inorder to solve it as 2+5*8

Is there a better way? Using eval seems a bit hacky and perhaps I can just have a function calculate the total sum on either side and then do a left + right instead.

class Node {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
}

class BinarySearchTree {
constructor() {
this.root = null;
}

solveEquation() {
let equation = "";
let traverse = (currentNode = this.root) => {
if (currentNode !== null) {
if (currentNode.left !== null) traverse(currentNode.left);
equation += currentNode.value;
if (currentNode.right !== null) traverse(currentNode.right);
}
}

traverse();
return eval(equation);
}

init() {
this.root = new Node('+');
let currentNode = this.root;
currentNode.left = new Node(2);
currentNode.right = new Node('*');
currentNode = currentNode.right;
currentNode.left = new Node(5);
currentNode.right = new Node(8);
}
}

let bst = new BinarySearchTree();
bst.init();
console.log(bst.solveEquation());

• The input is a binary tree, but in what sense is it a binary search tree? Commented Mar 6, 2019 at 20:29

 dispatch = {