Пример #1
0
  @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();
  }
Пример #2
0
  @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();
  }