File tree Expand file tree Collapse file tree 1 file changed +5
-5
lines changed
src/main/java/dataStructures/trie Expand file tree Collapse file tree 1 file changed +5
-5
lines changed Original file line number Diff line number Diff line change @@ -100,26 +100,26 @@ public void delete(String word) {
100100 public void deleteAndPrune (String word ) {
101101 List <TrieNode > trackNodes = new ArrayList <>();
102102 TrieNode trav = root ;
103+ trackNodes .add (trav );
103104 char curr ;
104105 for (int i = 0 ; i < word .length (); i ++) {
105106 curr = word .charAt (i );
106107 if (!trav .children .containsKey (curr )) {
107108 return ; // word does not exist in trie
108109 }
109- trackNodes .add (trav );
110110 trav = trav .children .get (curr );
111+ trackNodes .add (trav );
111112 }
112113 trav .isEnd = false ;
113114
114115 // now, we start pruning
115116 TrieNode currNode ; // nodes representing chars, where chars will be iterated from the back
116- TrieNode nodeBeforeCurr ;
117117 for (int i = word .length () - 1 ; i >= 0 ; i --) { // consider chars from back
118118 curr = word .charAt (i );
119- nodeBeforeCurr = trackNodes .get (i );
120- currNode = nodeBeforeCurr . children . get (curr );
119+ currNode = trackNodes .get (i + 1 );
120+ TrieNode beforeCurrNode = trackNodes . get (i );
121121 if (!currNode .isEnd && currNode .children .size () == 0 ) { // node essentially doesn't track anything, remove
122- nodeBeforeCurr .children .remove (curr );
122+ beforeCurrNode .children .remove (curr );
123123 } else { // children.size() > 0; i.e. this node is still useful; no need to further prune upwards
124124 break ;
125125 }
You can’t perform that action at this time.
0 commit comments