1- import { Array1DTracer , LogTracer } from 'algorithm-visualizer' ;
1+ import { Array1DTracer , GraphTracer , LogTracer } from 'algorithm-visualizer' ;
22
33const T = { } ;
44
5- const elements = [ 5 , 8 , 10 , 3 , 1 , 6 , 9 , 7 , 2 , 0 , 4 ] ; // item to be searched
6- const tracer = new DirectedGraphConstructTracer ( ' BST - Elements marked red indicates the current status of tree ' , 0 ) ;
7- const tracer2 = new Array1DTracer ( ' Elements ' ) . set ( elements ) ;
5+ const elements = [ 5 , 8 , 10 , 3 , 1 , 6 , 9 , 7 , 2 , 0 , 4 ] ; // item to be inserted
6+ const graphTracer = new GraphTracer ( ' BST - Elements marked red indicates the current status of tree ' ) ;
7+ const elemTracer = new Array1DTracer ( ' Elements ' ) . set ( elements ) ;
88const logger = new LogTracer ( ' Log ' ) ;
9- tracer . log ( logger ) . wait ( ) ;
9+ graphTracer . log ( logger ) . wait ( ) ;
1010
1111function bstInsert ( root , element , parent ) { // root = current node , parent = previous node
12- tracer . visit ( root , parent ) . wait ( ) ;
12+ graphTracer . visit ( root , parent ) . wait ( ) ;
1313 const treeNode = T [ root ] ;
1414 let propName = '' ;
1515 if ( element < root ) {
@@ -18,25 +18,25 @@ function bstInsert(root, element, parent) { // root = current node , parent = pr
1818 propName = 'right' ;
1919 }
2020 if ( propName !== '' ) {
21- if ( ! treeNode . hasOwnProperty ( propName ) ) { // insert as left child of root
21+ if ( ! ( propName in treeNode ) ) { // insert as left child of root
2222 treeNode [ propName ] = element ;
2323 T [ element ] = { } ;
24- tracer . addNode ( element , root ) . wait ( ) ;
25- logger . print ( `${ element } Inserted ` ) ;
24+ graphTracer . addNode ( element ) . addEdge ( root , element ) . select ( element , root ) . wait ( ) . deselect ( element , root ) ;
25+ logger . print ( `${ element } Inserted` ) ;
2626 } else {
2727 bstInsert ( treeNode [ propName ] , element , root ) ;
2828 }
2929 }
30+ graphTracer . leave ( root , parent ) . wait ( ) ;
3031}
3132
3233const Root = elements [ 0 ] ; // take first element as root
3334T [ Root ] = { } ;
34- tracer . addRoot ( Root ) ;
35+ graphTracer . addNode ( Root ) . layoutTree ( Root , true ) ;
3536logger . print ( `${ Root } Inserted as root of tree ` ) ;
3637
3738for ( let i = 1 ; i < elements . length ; i ++ ) {
38- tracer2 . select ( i ) . wait ( ) ;
39+ elemTracer . select ( i ) . wait ( ) ;
3940 bstInsert ( Root , elements [ i ] ) ; // insert ith element
40- tracer2 . deselect ( i ) . wait ( ) ;
41- tracer . clearTraversal ( ) ;
41+ elemTracer . deselect ( i ) . wait ( ) ;
4242}
0 commit comments