all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
40
Task/Tree-traversal/JavaScript/tree-traversal.js
Normal file
40
Task/Tree-traversal/JavaScript/tree-traversal.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
function BinaryTree(value, left, right) {
|
||||
this.value = value;
|
||||
this.left = left;
|
||||
this.right = right;
|
||||
}
|
||||
BinaryTree.prototype.preorder = function(f) {this.walk(f,['this','left','right'])}
|
||||
BinaryTree.prototype.inorder = function(f) {this.walk(f,['left','this','right'])}
|
||||
BinaryTree.prototype.postorder = function(f) {this.walk(f,['left','right','this'])}
|
||||
BinaryTree.prototype.walk = function(func, order) {
|
||||
for (var i in order)
|
||||
switch (order[i]) {
|
||||
case "this": func(this.value); break;
|
||||
case "left": if (this.left) this.left.walk(func, order); break;
|
||||
case "right": if (this.right) this.right.walk(func, order); break;
|
||||
}
|
||||
}
|
||||
BinaryTree.prototype.levelorder = function(func) {
|
||||
var queue = [this];
|
||||
while (queue.length != 0) {
|
||||
var node = queue.shift();
|
||||
func(node.value);
|
||||
if (node.left) queue.push(node.left);
|
||||
if (node.right) queue.push(node.right);
|
||||
}
|
||||
}
|
||||
|
||||
// convenience function for creating a binary tree
|
||||
function createBinaryTreeFromArray(ary) {
|
||||
var left = null, right = null;
|
||||
if (ary[1]) left = createBinaryTreeFromArray(ary[1]);
|
||||
if (ary[2]) right = createBinaryTreeFromArray(ary[2]);
|
||||
return new BinaryTree(ary[0], left, right);
|
||||
}
|
||||
|
||||
var tree = createBinaryTreeFromArray([1, [2, [4, [7]], [5]], [3, [6, [8],[9]]]]);
|
||||
|
||||
print("*** preorder ***"); tree.preorder(print);
|
||||
print("*** inorder ***"); tree.inorder(print);
|
||||
print("*** postorder ***"); tree.postorder(print);
|
||||
print("*** levelorder ***"); tree.levelorder(print);
|
||||
Loading…
Add table
Add a link
Reference in a new issue