コード例 #1
0
ファイル: Node.java プロジェクト: ReadyTalk/revori
  public static boolean treeEqual(
      NodeStack baseStack, Node base, NodeStack forkStack, Node fork, Comparator comparator) {
    if (base == Node.Null) {
      return fork == Node.Null;
    } else if (fork == Node.Null) {
      return base == Node.Null;
    } else {
      DiffIterator iterator =
          new DiffIterator(
              base,
              baseStack = new NodeStack(baseStack),
              fork,
              forkStack = new NodeStack(forkStack),
              Lists.newArrayList(Interval.Unbounded).iterator(),
              true,
              comparator);

      DiffIterator.DiffPair pair = new DiffIterator.DiffPair();
      boolean result = true;
      while (iterator.next(pair)) {
        if (!Node.valuesEqual(pair.base, pair.fork)) {
          result = false;
          break;
        }
      }

      baseStack.popStack();
      forkStack.popStack();

      return result;
    }
  }