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) {
100
100
public void deleteAndPrune (String word ) {
101
101
List <TrieNode > trackNodes = new ArrayList <>();
102
102
TrieNode trav = root ;
103
+ trackNodes .add (trav );
103
104
char curr ;
104
105
for (int i = 0 ; i < word .length (); i ++) {
105
106
curr = word .charAt (i );
106
107
if (!trav .children .containsKey (curr )) {
107
108
return ; // word does not exist in trie
108
109
}
109
- trackNodes .add (trav );
110
110
trav = trav .children .get (curr );
111
+ trackNodes .add (trav );
111
112
}
112
113
trav .isEnd = false ;
113
114
114
115
// now, we start pruning
115
116
TrieNode currNode ; // nodes representing chars, where chars will be iterated from the back
116
- TrieNode nodeBeforeCurr ;
117
117
for (int i = word .length () - 1 ; i >= 0 ; i --) { // consider chars from back
118
118
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 );
121
121
if (!currNode .isEnd && currNode .children .size () == 0 ) { // node essentially doesn't track anything, remove
122
- nodeBeforeCurr .children .remove (curr );
122
+ beforeCurrNode .children .remove (curr );
123
123
} else { // children.size() > 0; i.e. this node is still useful; no need to further prune upwards
124
124
break ;
125
125
}
You can’t perform that action at this time.
0 commit comments