public static boolean isValidTrivialCyclicGraph(SerializableDoublyLinkedNode actual) { if (actual == null) { return false; } if (!actual.getData().equals("head")) { return false; } SerializableDoublyLinkedNode lchild = actual.getLeftChild(); if (lchild == null) { return false; } SerializableDoublyLinkedNode rchild = actual.getRightChild(); if (rchild == null) { return false; } if (actual != lchild && actual != rchild) { return false; } return true; }
public static boolean isValidComplexCyclicGraph(SerializableDoublyLinkedNode actual) { assertNotNull(actual); if (actual == null) { return false; } int i = 0; SerializableDoublyLinkedNode currNode = actual; for (; i < 5; ++i) { assertEquals("n" + Integer.toString(i), currNode.getData()); if (!currNode.getData().equals("n" + Integer.toString(i))) { return false; } SerializableDoublyLinkedNode nextNode = currNode.getRightChild(); SerializableDoublyLinkedNode prevNode = currNode.getLeftChild(); assertNotNull("next node", nextNode); assertNotNull("prev node", prevNode); if (nextNode == null || prevNode == null) { return false; } assertSame("A", currNode, nextNode.getLeftChild()); if (nextNode.getLeftChild() != currNode) { return false; } assertSame("B", currNode, prevNode.getRightChild()); if (prevNode.getRightChild() != currNode) { return false; } currNode = currNode.getRightChild(); if (currNode == actual) { break; } } assertFalse("i = " + i, i >= 4); if (i >= 4) { return false; } return true; }
public static boolean isValidAcyclicGraph(SerializableDoublyLinkedNode actual) { if (actual == null) { return false; } if (!actual.getData().equals("head")) { return false; } SerializableDoublyLinkedNode leftChild = actual.getLeftChild(); if (leftChild == null) { return false; } if (!leftChild.getData().equals("lchild")) { return false; } if (leftChild.getLeftChild() != null || leftChild.getRightChild() != null) { return false; } SerializableDoublyLinkedNode rightChild = actual.getRightChild(); if (rightChild == null) { return false; } if (!rightChild.getData().equals("rchild")) { return false; } if (rightChild.getLeftChild() != null || rightChild.getRightChild() != null) { return false; } return true; }