Skip to content

Instantly share code, notes, and snippets.

@Spuffynism
Last active November 14, 2017 17:52
Show Gist options
  • Save Spuffynism/dc611dd3b6117ed9d7afa54660192cdc to your computer and use it in GitHub Desktop.
Save Spuffynism/dc611dd3b6117ed9d7afa54660192cdc to your computer and use it in GitHub Desktop.
tree visiting algorithms
function Node (name) {
this.name = name;
this.children = [];
}
function Tree (node) {
this.node = node;
this.visit = function(fn) {
return fn(this.node);
}
}
var preOrder = (node) => [].concat.apply([node.name], node.children.map(preOrder));
var postOrder = (node) => [].concat.apply([], node.children.map(postOrder)).concat([node.name]);
var r = new Node('R'),
m = new Node('M'),
n = new Node('N'),
a = new Node('A'),
b = new Node('B'),
t = new Node('T'),
o = new Node('O'),
p = new Node('P'),
q = new Node('Q');
r.children = [m, n];
m.children = [a, b];
a.children = [t];
n.children = [o,p, q];
var tree = new Tree(r);
console.log("preOrder:", tree.visit(preOrder));
console.log("postOrder:", tree.visit(postOrder));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment