Skip to content

Instantly share code, notes, and snippets.

@alexandervasyuk
Created October 8, 2014 23:16
Show Gist options
  • Save alexandervasyuk/807decb6ec6a4c7a52ff to your computer and use it in GitHub Desktop.
Save alexandervasyuk/807decb6ec6a4c7a52ff to your computer and use it in GitHub Desktop.
infixToBinaryCreateSubtree
var createSubtree = function createSubtree(operator, tree) {
if (tree == null) {
var right = outputStack.pop(),
left = outputStack.pop();
tree = new BinaryTreeNode(operator);
tree.right = right instanceof BinaryTreeNode ? right : new BinaryTreeNode(right);
tree.left = left instanceof BinaryTreeNode ? left : new BinaryTreeNode(left);
} else {
var subtree = tree,
left = outputStack.pop();
tree = new BinaryTreeNode(operator);
tree.right = subtree;
tree.left = left instanceof BinaryTreeNode ? left : new BinaryTreeNode(left);
}
if (!operatorStack.isEmpty() && operator.lessOrEqualInPrecedenceTo(operatorStack.peek())) {
return createSubtree(operatorStack.pop(), tree);
} else {
return tree;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment