@@ -102,8 +102,13 @@ export class BST {
102102 // when the node has no children or when its a leaf
103103 // then simply delete the node
104104 if ( ! findNode . currentNode . left && ! findNode . currentNode . right ) {
105- const direction = findNode . parentNode . key > val ? 'left' : 'right' ;
106- findNode . parentNode [ direction ] = null ;
105+ //check if the node is the root node
106+ if ( findNode . parentNode === null ) {
107+ this . root = null ;
108+ } else {
109+ const direction = findNode . parentNode . key > val ? 'left' : 'right' ;
110+ findNode . parentNode [ direction ] = null ;
111+ }
107112 this [ length ] -- ;
108113 }
109114 // case 2
@@ -155,14 +160,16 @@ export class BST {
155160 lookup ( val ) {
156161 let response = { hasVal : false , currentNode : null , parentNode : null } ;
157162 const lookRecursively = ( node = this . root , parent = null ) => {
158- if ( node . key === val ) {
159- response . hasVal = true ;
160- response . currentNode = node ;
161- response . parentNode = parent ;
162- } else if ( node . left && node . key > val ) {
163- lookRecursively ( node . left , node ) ;
164- } else if ( node . right && node . key < val ) {
165- lookRecursively ( node . right , node ) ;
163+ if ( node ) {
164+ if ( node . key === val ) {
165+ response . hasVal = true ;
166+ response . currentNode = node ;
167+ response . parentNode = parent ;
168+ } else if ( node . left && node . key > val ) {
169+ lookRecursively ( node . left , node ) ;
170+ } else if ( node . right && node . key < val ) {
171+ lookRecursively ( node . right , node ) ;
172+ }
166173 }
167174 }
168175
0 commit comments