package com.anuragkapur.ds.tree; import org.junit.Test; import static org.junit.Assert.*; /** * @author anuragkapur */ public class BSTSuccessorTest { @Test public void testGetSuccessor() throws Exception { /* 6 3 8 2 5 7 10 4 9 */ TreeNode rootNode = new TreeNode(6); TreeNode node1 = new TreeNode(3); TreeNode node2 = new TreeNode(8); TreeNode node3 = new TreeNode(2); TreeNode node4 = new TreeNode(5); TreeNode node5 = new TreeNode(7); TreeNode node6 = new TreeNode(10); TreeNode node7 = new TreeNode(4); TreeNode node8 = new TreeNode(9); rootNode.setLeft(node1); rootNode.setRight(node2); node1.setLeft(node3); node1.setRight(node4); node1.setParent(rootNode); node2.setLeft(node5); node2.setRight(node6); node2.setParent(rootNode); node3.setParent(node1); node4.setLeft(node7); node4.setParent(node1); node5.setParent(node2); node6.setLeft(node8); node6.setParent(node2); node7.setParent(node4); node8.setParent(node6); BSTSuccessorAndPredecessor bstSuccessorAndPredecessor = new BSTSuccessorAndPredecessor(); assertEquals(node7.getKey(), bstSuccessorAndPredecessor.getSuccessor(node1).getKey()); assertEquals(node8.getKey(), bstSuccessorAndPredecessor.getSuccessor(node2).getKey()); assertEquals(node1.getKey(), bstSuccessorAndPredecessor.getSuccessor(node3).getKey()); assertEquals(rootNode.getKey(), bstSuccessorAndPredecessor.getSuccessor(node4).getKey()); assertEquals(node2.getKey(), bstSuccessorAndPredecessor.getSuccessor(node5).getKey()); assertEquals(null, bstSuccessorAndPredecessor.getSuccessor(node6)); assertEquals(node4.getKey(), bstSuccessorAndPredecessor.getSuccessor(node7).getKey()); assertEquals(node6.getKey(), bstSuccessorAndPredecessor.getSuccessor(node8).getKey()); } @Test public void testGetPredecessor() throws Exception { /* 6 3 8 2 5 7 10 4 9 */ TreeNode rootNode = new TreeNode(6); TreeNode node1 = new TreeNode(3); TreeNode node2 = new TreeNode(8); TreeNode node3 = new TreeNode(2); TreeNode node4 = new TreeNode(5); TreeNode node5 = new TreeNode(7); TreeNode node6 = new TreeNode(10); TreeNode node7 = new TreeNode(4); TreeNode node8 = new TreeNode(9); rootNode.setLeft(node1); rootNode.setRight(node2); node1.setLeft(node3); node1.setRight(node4); node1.setParent(rootNode); node2.setLeft(node5); node2.setRight(node6); node2.setParent(rootNode); node3.setParent(node1); node4.setLeft(node7); node4.setParent(node1); node5.setParent(node2); node6.setLeft(node8); node6.setParent(node2); node7.setParent(node4); node8.setParent(node6); BSTSuccessorAndPredecessor bstSuccessorAndPredecessor = new BSTSuccessorAndPredecessor(); assertEquals(node3.getKey(), bstSuccessorAndPredecessor.getPredecessor(node1).getKey()); assertEquals(node5.getKey(), bstSuccessorAndPredecessor.getPredecessor(node2).getKey()); assertEquals(null, bstSuccessorAndPredecessor.getPredecessor(node3)); assertEquals(node7.getKey(), bstSuccessorAndPredecessor.getPredecessor(node4).getKey()); assertEquals(rootNode.getKey(), bstSuccessorAndPredecessor.getPredecessor(node5).getKey()); assertEquals(node8.getKey(), bstSuccessorAndPredecessor.getPredecessor(node6).getKey()); assertEquals(node1.getKey(), bstSuccessorAndPredecessor.getPredecessor(node7).getKey()); assertEquals(node2.getKey(), bstSuccessorAndPredecessor.getPredecessor(node8).getKey()); } }