package com.anuragkapur.ds.tree;
/**
* @author: anuragkapur
* @since: 09/05/2014
*/
public class TreeFactory {
/**
* @return Root node of a balanced binary tree. The tree may/may not be 'complete'.
*/
public static TreeNode getBalancedBinaryTree() {
/*
4
1 3
2 4 5 7
2 6
*/
TreeNode rootNode = new TreeNode(4);
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(3);
TreeNode node3 = new TreeNode(2);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(7);
TreeNode node7 = new TreeNode(2);
TreeNode node8 = new TreeNode(6);
rootNode.setLeft(node1);
rootNode.setRight(node2);
node1.setLeft(node3);
node1.setRight(node4);
node2.setLeft(node5);
node2.setRight(node6);
node4.setLeft(node7);
node6.setLeft(node8);
return rootNode;
}
/**
* @return Root node of a un-balanced binary tree. The tree may/may not be 'complete'.
*/
public static TreeNode getUnBalancedBinaryTree() {
/*
4
1 3
2 4
2
*/
TreeNode rootNode = new TreeNode(4);
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(3);
TreeNode node3 = new TreeNode(2);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(2);
rootNode.setLeft(node1);
rootNode.setRight(node2);
node1.setLeft(node3);
node1.setRight(node4);
node4.setLeft(node5);
return rootNode;
}
public static TreeNode getBinarySearchTree() {
/*
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);
return rootNode;
}
public static TreeNode getBinarySearchTreeForInsertionTest1() {
/*
6
4 8
2 5 7 10
9
*/
TreeNode rootNode = new TreeNode(6);
TreeNode node1 = new TreeNode(4);
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 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.setParent(node1);
node5.setParent(node2);
node6.setLeft(node8);
node6.setParent(node2);
node8.setParent(node6);
return rootNode;
}
public static TreeNode getInvalidBinarySearchTree() {
/*
4
3 6
2 6 5 7
3 6
*/
TreeNode rootNode = new TreeNode(4);
TreeNode node1 = new TreeNode(3);
TreeNode node2 = new TreeNode(6);
TreeNode node3 = new TreeNode(2);
TreeNode node4 = new TreeNode(6);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(7);
TreeNode node7 = new TreeNode(3);
TreeNode node8 = new TreeNode(6);
rootNode.setLeft(node1);
rootNode.setRight(node2);
node1.setLeft(node3);
node1.setRight(node4);
node2.setLeft(node5);
node2.setRight(node6);
node4.setLeft(node7);
node6.setLeft(node8);
return rootNode;
}
}