Skip to content

Commit 58a4622

Browse files
committed
Refactor prune function for better clarity
1 parent bfefa52 commit 58a4622

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/main/java/dataStructures/trie/Trie.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)