@Override public void runAlgorithm() throws InterruptedException { setHeader("trieinsert", s.substring(0, s.length() - 1)); if (s.compareTo("$") == 0) { addNote("badword"); } TrieNode v = T.getRoot(); v.mark(); addNote("trieinsertnote"); addStep("trierootstart"); pause(); v.unmark(); hw = new TrieWordNode(T, s); hw.setColor(NodeColor.INSERT); addToScene(hw); hw.goNextTo(v); while (s.compareTo("$") != 0) { final char ch = s.charAt(0); hw.setAndGoNextTo(s, v); TrieNode w = v.getChildWithCH(ch); if (w != null) { addStep("trieinsertwch", "" + ch); } else { addStep("trieinsertwoch", "" + ch); w = v.addChild(ch, hw.x, hw.y); } w.setColor(NodeColor.CACHED); T.reposition(); pause(); v = w; v.setColor(NodeColor.INSERT); T.reposition(); s = s.substring(1); } hw.setAndGoNextTo(s, v); final TrieNode w = v.getChildWithCH('$'); if (w == null) { addStep("trieinserteow"); } else { addStep("trieinsertneow"); } pause(); v.setColor(NodeColor.NORMAL); v = v.addChild('$', hw.x, hw.y); T.reposition(); hw.setAndGoNextTo(s, v); beforeReturn(); }
@Override public void run() { if (s.compareTo("$") == 0) { addNote("badword"); } TrieNode v = T.getRoot(); v.mark(); addNote("trieinsertnote"); addStep("trierootstart"); mysuspend(); v.unmark(); T.hw = new TrieWordNode(T, s); T.hw.setColor(NodeColor.INSERT); T.hw.goNextTo(v); while (s.compareTo("$") != 0) { char ch = s.charAt(0); T.hw.setAndGoNextTo(s, v); TrieNode w = v.getChildWithCH(ch); if (w != null) { addStep("trieinsertwch", "" + ch); } else { addStep("trieinsertwoch", "" + ch); w = v.addChild(ch, T.hw.x, T.hw.y); } w.setColor(NodeColor.CACHED); T.reposition(); mysuspend(); v = w; v.setColor(NodeColor.INSERT); T.reposition(); s = s.substring(1); } T.hw.setAndGoNextTo(s, v); TrieNode w = v.getChildWithCH('$'); if (w == null) { addStep("trieinserteow"); } else { addStep("trieinsertneow"); } mysuspend(); v.setColor(NodeColor.NORMAL); v = v.addChild('$', T.hw.x, T.hw.y); T.reposition(); T.hw.setAndGoNextTo(s, v); beforeReturn(); }