diff --git a/data-structures/src/main/java/com/baeldung/trie/Trie.java b/data-structures/src/main/java/com/baeldung/trie/Trie.java index dd51d97b2d..dac1a64733 100644 --- a/data-structures/src/main/java/com/baeldung/trie/Trie.java +++ b/data-structures/src/main/java/com/baeldung/trie/Trie.java @@ -1,13 +1,13 @@ package com.baeldung.trie; -public class Trie { +class Trie { private TrieNode root; Trie() { root = new TrieNode(); } - public void insert(String word) { + void insert(String word) { TrieNode current = root; for (int i = 0; i < word.length(); i++) { @@ -16,11 +16,11 @@ public class Trie { current.setEndOfWord(true); } - public boolean delete(String word) { + boolean delete(String word) { return delete(root, word, 0); } - public boolean containsNode(String word) { + boolean containsNode(String word) { TrieNode current = root; for (int i = 0; i < word.length(); i++) { @@ -34,7 +34,7 @@ public class Trie { return current.isEndOfWord(); } - public boolean isEmpty() { + boolean isEmpty() { return root == null; } @@ -51,7 +51,7 @@ public class Trie { if (node == null) { return false; } - boolean shouldDeleteCurrentNode = delete(node, word, index + 1); + boolean shouldDeleteCurrentNode = delete(node, word, index + 1) && !node.isEndOfWord(); if (shouldDeleteCurrentNode) { current.getChildren().remove(ch); diff --git a/data-structures/src/main/java/com/baeldung/trie/TrieNode.java b/data-structures/src/main/java/com/baeldung/trie/TrieNode.java index 25dc753950..73dcdb63f5 100644 --- a/data-structures/src/main/java/com/baeldung/trie/TrieNode.java +++ b/data-structures/src/main/java/com/baeldung/trie/TrieNode.java @@ -4,28 +4,18 @@ import java.util.HashMap; import java.util.Map; class TrieNode { - private Map children; + private final Map children = new HashMap<>(); private boolean endOfWord; - public TrieNode() { - children = new HashMap<>(); - endOfWord = false; - } - - public Map getChildren() { + Map getChildren() { return children; } - public void setChildren(Map children) { - this.children = children; - } - - public boolean isEndOfWord() { + boolean isEndOfWord() { return endOfWord; } - public void setEndOfWord(boolean endOfWord) { + void setEndOfWord(boolean endOfWord) { this.endOfWord = endOfWord; } - } \ No newline at end of file diff --git a/data-structures/src/test/java/com/baeldung/trie/TrieTest.java b/data-structures/src/test/java/com/baeldung/trie/TrieTest.java index be7e5575d8..6f7073651e 100644 --- a/data-structures/src/test/java/com/baeldung/trie/TrieTest.java +++ b/data-structures/src/test/java/com/baeldung/trie/TrieTest.java @@ -1,6 +1,7 @@ package com.baeldung.trie; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -53,6 +54,19 @@ public class TrieTest { assertFalse(trie.containsNode("Programming")); } + @Test + public void givenATrie_whenDeletingOverlappingElements_thenDontDeleteSubElement() { + + Trie trie1 = new Trie(); + + trie1.insert("pie"); + trie1.insert("pies"); + + trie1.delete("pies"); + + Assertions.assertTrue(trie1.containsNode("pie")); + } + private Trie createExampleTrie() { Trie trie = new Trie(); diff --git a/spring-boot-ops/README.md b/spring-boot-ops/README.md deleted file mode 100644 index 7eca307924..0000000000 --- a/spring-boot-ops/README.md +++ /dev/null @@ -1,10 +0,0 @@ -### Relevant Articles: - -- [Deploy a Spring Boot WAR into a Tomcat Server](http://www.baeldung.com/spring-boot-war-tomcat-deploy) -- [Spring Boot Dependency Management with a Custom Parent](http://www.baeldung.com/spring-boot-dependency-management-custom-parent) -- [A Custom Data Binder in Spring MVC](http://www.baeldung.com/spring-mvc-custom-data-binder) -- [Create a Fat Jar App with Spring Boot](http://www.baeldung.com/deployable-fat-jar-spring-boot) -- [Introduction to WebJars](http://www.baeldung.com/maven-webjars) -- [Intro to Spring Boot Starters](http://www.baeldung.com/spring-boot-starters) -- [A Quick Guide to Maven Wrapper](http://www.baeldung.com/maven-wrapper) -- [Shutdown a Spring Boot Application](http://www.baeldung.com/spring-boot-shutdown)