"use strict"; //var tab = window.open(); myMain(); function myMain() { // just a "random" binary tree // has no less/greater order on values var tree = makeCell("alpha"); // Cell tree = new Cell("alpha"); tree.LC = makeCell("beta"); // tree.LC = new Cell("beta"); tree.RC = makeCell("gamma"); tree.LC.LC = makeCell("delta"); tree.LC.RC = makeCell("epsilon"); tree.RC.RC = makeCell("theta"); /* // binary tree that is BST ordered var tree = makeCell("delta"); tree.LC = makeCell("alpha"); tree.RC = makeCell("gamma"); tree.LC.RC = makeCell("beta"); tree.RC.LC = makeCell("epsilon"); tree.RC.RC = makeCell("theta"); */ /* // another BST, same values diff structure var tree = makeCell("gamma"); tree.LC = makeCell("beta"); tree.RC = makeCell("theta"); tree.LC.RC = makeCell("epsilon"); tree.LC.LC = makeCell("alpha"); tree.LC.RC.LC = makeCell("delta"); */ alert( "IN ORDER traversal" ); inOrder(tree); alert( "PRE ORDER traversal" ); preOrder(tree); alert( "POST ORDER traversal" ); postOrder(tree); //tab.document.close(); } function inOrder( cel ) { if (cel===null) { return; } inOrder(cel.LC); alert(cel.val); // root is handled in between children inOrder(cel.RC); } function preOrder( cel ) { if (cel===null) { return; } alert(cel.val); // root is handled pre children preOrder(cel.LC); preOrder(cel.RC); } function postOrder ( cel ) { if (cel===null) { return; } postOrder(cel.LC); postOrder(cel.RC); alert(cel.val); // root is handled post children } function makeCell ( v ) { var cell = { val: v, LC: null, RC: null }; return cell; }