package redblacktree;
import java.util.HashMap;
import org.junit.Test;
import redblacktree.RBTree.RBTreeNode;
import avltree.test.TreeTestBase;
public class RBTreeFunctionTest extends TreeTestBase {
@Test
public void testAdd() {
String dummy = "";
for (int j = 0; j < loop; j++) {
// TreeMap<Integer, String> tree = new TreeMap<Integer, String>();
RBTree<Integer, String> tree = new RBTree<Integer, String>();
for (int i = 0; i < unit; i++) {
int a = getRamdomInt();
tree.put(a, dummy);
}
checkBlackHeight(tree.getRoot());
map.clear();
}
}
HashMap<Object, Integer> map = new HashMap<Object, Integer>();
private void checkBlackHeight(RBTreeNode<?, ?> root) {
int bhL = 0;
int bhR = 0;
if (root.left != null) {
checkBlackHeight(root.left);
bhL = map.get(root.left);
}
if (root.right != null) {
checkBlackHeight(root.right);
bhR = map.get(root.right);
}
if (bhL != bhR) {
throw new RuntimeException("Black Height not balanced now!");
}
if (root.color == RBTree.BLACK) {
bhL++;
}
map.put(root, bhL);
}
}