null root 's suffix edge points to  Imaginary root, since for a String  of length = 0 has an imaginary suffix String.
root2 = new Node ( ) ; root2 . Length = 0 ; root2 . suffixEdge = 1 ; for ( int i = 0 ; i < MAXN ; i ++ ) tree [ i ] = new Node ( ) ; tree [ 1 ] = root1 ; tree [ 2 ] = root2 ; ptr = 2 ; currNode = 1 ; s = " forgeeksskeegfor " . ToCharArray ( ) ; for ( int i = 0 ; i < s . Length ; i ++ ) insert ( i ) ;