Vir Pratap Uttam
BAN USER VIR PRATAP UTTAM(8+ yrs)
virprataputtam@hotmail.com
CERTIFICATIONS
• Java EE 6 Enterprise Architect Certified Master Exam.
• Oracle Certified Expert, Java EE 6 Web Services Developer.
• Oracle Certified Expert, Java EE 6 Java Persistence API Developer.
• OCWCD(Oracle Certified Professional, Java EE 5 Web Component Developer).
• OCJP6 (Oracle Certified Java Programmer).
LANGUAGES AND TECHNOLOGIES
• JDK 1.6,JSP ,Servlet
• Multithreading (volatile, ThreadPool, Reentrant Locks, Concurrent Hashmaps, Semaphores, Cyclic Barrier, Countdownlatches, Executors Framework, Synchronization etc.)
• Data Structures(Lists, Trees, Graphs, Queues, Stacks etc.)(Problem Solving, Time complexity analysis), Algorithm
• Spring 1.2 ,Spring 3(IOC ,AOP ,Security ,Services, MVC, Web, Integration, Batch, JMS), RTDS(HSBC Owned Framework), Struts 1.3 Framework , JSF(Java Server Faces)
• Hibernate 3.1, EJB 3
• Design Patterns (Singleton, Factory, Abstract Factory, Façade, Proxy, Strategy, Visitor etc.)
• Web Services(SOAP, REST, SOA)
• Web Logic Server, Jakarta Tomcat, Web Sphere
• Quality Center 9.2, Maven
• Oracle 10g , MySQL
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
TC - O(n)
SC - O(n)
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
TC - O(n2)
SC - O(n)
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* check for BST */
private static boolean isBST(BSTNode root) {
if (root == null)
return true;
if (root.getLeft() != null && findMax(root.getLeft()) > root.getData())
return false;
if (root.getRight() != null
&& findMin(root.getRight()) < root.getData())
return false;
if (!(isBST(root.getLeft())) || (!isBST(root.getRight())))
return false;
return true;
}
/* Check for binary tree whether its binary search tree */
private static boolean isBST(BSTNode root, int prev) {
if(root==null)
return true;
if(!isBST(root.getLeft(),prev))
return false;
if(root.getData()<prev)
return false;
prev=root.getData();
return isBST(root.getRight(),prev);
}
private static void preOrderTraversal(BinaryTreeNode root) {
Stack<BinaryTreeNode> s = new Stack<BinaryTreeNode>();
while (true) {
while (root != null) {
System.out.println(root.getData());
s.push(root);
root = root.getLeft();
}
if (s.isEmpty())
return;
root = (BinaryTreeNode) s.pop();
root = root.getRight();
}
}
private static void preOrderTraversal(BinaryTreeNode root) {
Stack<BinaryTreeNode> s = new Stack<BinaryTreeNode>();
while (true) {
while (root != null) {
System.out.println(root.getData());
s.push(root);
root = root.getLeft();
}
if (s.isEmpty())
return;
root = (BinaryTreeNode) s.pop();
root = root.getRight();
}
}
private static BinaryTreeNode deepestNode(BinaryTreeNode root) {
BinaryTreeNode temp = null;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
while (!q.isEmpty()) {
temp = q.poll();
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
return temp;
}
private static BinaryTreeNode deepestNode(BinaryTreeNode root) {
BinaryTreeNode temp = null;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
while (!q.isEmpty()) {
temp = q.poll();
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
return temp;
}
private static Integer sumAllExcludingLeaves(BinaryTreeNode root) {
int sum = 0;
BinaryTreeNode temp;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
while (!q.isEmpty()) {
temp = q.poll();
if((temp.getLeft()!=null && temp.getRight()==null) || (temp.getLeft()==null && temp.getRight()!=null) || (temp.getLeft()!=null && temp.getRight()!=null))
sum += temp.getData();
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
return sum;
}
/* Sum of all leaves in binary tree*/
private static Integer sumOfLeaves(BinaryTreeNode root) {
BinaryTreeNode temp = null;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
int sum = 0;
while (!q.isEmpty()) {
temp = q.poll();
if (temp.getLeft() == null && temp.getRight() == null) {
sum+=temp.getData();
}
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
return sum;
}
private static BinaryTreeNode convertToMirror(BinaryTreeNode root) {
BinaryTreeNode temp;
if (root != null) {
convertToMirror(root.getLeft());
convertToMirror(root.getRight());
temp = root.getLeft();
root.setLeft(root.getRight());
root.setRight(temp);
}
return root;
}
private static BinaryTreeNode convertToMirror(BinaryTreeNode root) {
BinaryTreeNode temp;
if (root != null) {
convertToMirror(root.getLeft());
convertToMirror(root.getRight());
temp = root.getLeft();
root.setLeft(root.getRight());
root.setRight(temp);
}
return root;
}
private static BinaryTreeNode convertToMirror(BinaryTreeNode root) {
BinaryTreeNode temp;
if (root != null) {
convertToMirror(root.getLeft());
convertToMirror(root.getRight());
temp = root.getLeft();
root.setLeft(root.getRight());
root.setRight(temp);
}
return root;
}
private static BinaryTreeNode convertToMirror(BinaryTreeNode root) {
BinaryTreeNode temp;
if (root != null) {
convertToMirror(root.getLeft());
convertToMirror(root.getRight());
temp = root.getLeft();
root.setLeft(root.getRight());
root.setRight(temp);
}
return root;
}
private static BinaryTreeNode convertToMirror(BinaryTreeNode root) {
BinaryTreeNode temp;
if (root != null) {
convertToMirror(root.getLeft());
convertToMirror(root.getRight());
temp = root.getLeft();
root.setLeft(root.getRight());
root.setRight(temp);
}
return root;
}
private static BinaryTreeNode convertToMirror(BinaryTreeNode root) {
BinaryTreeNode temp;
if (root != null) {
convertToMirror(root.getLeft());
convertToMirror(root.getRight());
temp = root.getLeft();
root.setLeft(root.getRight());
root.setRight(temp);
}
return root;
}
static int preIndex = 0;
static BinaryTreeNode newNode;
private static BinaryTreeNode buildBinaryTree(int[] preOrder,
int[] inOrder, int inStrt, int inEnd) {
if (inStrt > inEnd)
return null;
newNode = new BinaryTreeNode(preOrder[preIndex]);
preIndex++;
if (inStrt == inEnd)
return newNode;
int inIndex = search(inOrder, inStrt, inEnd, newNode.getData());
newNode.setLeft(buildBinaryTree(preOrder, inOrder, inStrt,
inIndex - 1));
newNode.setRight(buildBinaryTree(preOrder, inOrder, inIndex + 1,
inEnd));
return newNode;
}
static int preIndex = 0;
static BinaryTreeNode newNode;
private static BinaryTreeNode buildBinaryTree(int[] preOrder,
int[] inOrder, int inStrt, int inEnd) {
if (inStrt > inEnd)
return null;
newNode = new BinaryTreeNode(preOrder[preIndex]);
preIndex++;
if (inStrt == inEnd)
return newNode;
int inIndex = search(inOrder, inStrt, inEnd, newNode.getData());
newNode.setLeft(buildBinaryTree(preOrder, inOrder, inStrt,
inIndex - 1));
newNode.setRight(buildBinaryTree(preOrder, inOrder, inIndex + 1,
inEnd));
return newNode;
}
static int preIndex = 0;
static BinaryTreeNode newNode;
private static BinaryTreeNode buildBinaryTree(int[] preOrder,
int[] inOrder, int inStrt, int inEnd) {
if (inStrt > inEnd)
return null;
newNode = new BinaryTreeNode(preOrder[preIndex]);
preIndex++;
if (inStrt == inEnd)
return newNode;
int inIndex = search(inOrder, inStrt, inEnd, newNode.getData());
newNode.setLeft(buildBinaryTree(preOrder, inOrder, inStrt,
inIndex - 1));
newNode.setRight(buildBinaryTree(preOrder, inOrder, inIndex + 1,
inEnd));
return newNode;
}
/* In Order Traversal Using Recursion */
private static void inOrderTraversalUsingRecrusion(BinaryTreeNode root) {
if (root != null) {
inOrderTraversalUsingRecrusion(root.getLeft());
System.out.println(root.getData());
inOrderTraversalUsingRecrusion(root.getRight());
}
}
private static void inOrderTraversal(BinaryTreeNode root) {
// TODO Auto-generated method stub
Stack<BinaryTreeNode> s = new Stack<BinaryTreeNode>();
while (true) {
while (root != null) {
s.push(root);
root = root.getLeft();
}
if (s.isEmpty())
return;
root = (BinaryTreeNode) s.pop();
System.out.println(root.getData());
root = root.getRight();
}
}
private static void inOrderTraversal(BinaryTreeNode root) {
// TODO Auto-generated method stub
Stack<BinaryTreeNode> s = new Stack<BinaryTreeNode>();
while (true) {
while (root != null) {
s.push(root);
root = root.getLeft();
}
if (s.isEmpty())
return;
root = (BinaryTreeNode) s.pop();
System.out.println(root.getData());
root = root.getRight();
}
}
private static BinaryTreeNode LCA(BinaryTreeNode root,
BinaryTreeNode alpha, BinaryTreeNode beta) {
BinaryTreeNode left,right;
if(root==null)
return root;
if(root.getData()==alpha.getData() || root .getData()==beta.getData())
return root;
left=LCA(root.getLeft(),alpha,beta);
right=LCA(root.getRight(),alpha,beta);
if(left!=null && right!=null)
return root;
else
return left!=null?left:right;
}
private static BinaryTreeNode LCA(BinaryTreeNode root,
BinaryTreeNode alpha, BinaryTreeNode beta) {
BinaryTreeNode left,right;
if(root==null)
return root;
if(root.getData()==alpha.getData() || root .getData()==beta.getData())
return root;
left=LCA(root.getLeft(),alpha,beta);
right=LCA(root.getRight(),alpha,beta);
if(left!=null && right!=null)
return root;
else
return left!=null?left:right;
}
private static void zigZagTraversal(BinaryTreeNode root) {
int leftToRight=1;
BinaryTreeNode temp;
Stack<BinaryTreeNode> currentLevel=new Stack<BinaryTreeNode>();
Stack<BinaryTreeNode> nextLevel=new Stack<BinaryTreeNode>();
System.out.println("Zig Zag Traversal");
currentLevel.push(root);
while (!currentLevel.isEmpty()) {
temp = currentLevel.pop();
if(temp!=null)
{
System.out.println(temp.getData());
if(leftToRight==1)
{
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
}
else
{
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
}
}
if(currentLevel.isEmpty())
{
leftToRight=1-leftToRight;
while(!nextLevel.isEmpty())
{
currentLevel.push(nextLevel.pop());
}
}
}
}
private static void zigZagTraversal(BinaryTreeNode root) {
int leftToRight=1;
BinaryTreeNode temp;
Stack<BinaryTreeNode> currentLevel=new Stack<BinaryTreeNode>();
Stack<BinaryTreeNode> nextLevel=new Stack<BinaryTreeNode>();
System.out.println("Zig Zag Traversal");
currentLevel.push(root);
while (!currentLevel.isEmpty()) {
temp = currentLevel.pop();
if(temp!=null)
{
System.out.println(temp.getData());
if(leftToRight==1)
{
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
}
else
{
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
}
}
if(currentLevel.isEmpty())
{
leftToRight=1-leftToRight;
while(!nextLevel.isEmpty())
{
currentLevel.push(nextLevel.pop());
}
}
}
}
private static void zigZagTraversal(BinaryTreeNode root) {
int leftToRight=1;
BinaryTreeNode temp;
Stack<BinaryTreeNode> currentLevel=new Stack<BinaryTreeNode>();
Stack<BinaryTreeNode> nextLevel=new Stack<BinaryTreeNode>();
System.out.println("Zig Zag Traversal");
currentLevel.push(root);
while (!currentLevel.isEmpty()) {
temp = currentLevel.pop();
if(temp!=null)
{
System.out.println(temp.getData());
if(leftToRight==1)
{
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
}
else
{
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
}
}
if(currentLevel.isEmpty())
{
leftToRight=1-leftToRight;
while(!nextLevel.isEmpty())
{
currentLevel.push(nextLevel.pop());
}
}
}
}
private static void zigZagTraversal(BinaryTreeNode root) {
int leftToRight=1;
BinaryTreeNode temp;
Stack<BinaryTreeNode> currentLevel=new Stack<BinaryTreeNode>();
Stack<BinaryTreeNode> nextLevel=new Stack<BinaryTreeNode>();
System.out.println("Zig Zag Traversal");
currentLevel.push(root);
while (!currentLevel.isEmpty()) {
temp = currentLevel.pop();
if(temp!=null)
{
System.out.println(temp.getData());
if(leftToRight==1)
{
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
}
else
{
if (temp.getRight() != null)
nextLevel.push(temp.getRight());
if (temp.getLeft() != null)
nextLevel.push(temp.getLeft());
}
}
if(currentLevel.isEmpty())
{
leftToRight=1-leftToRight;
while(!nextLevel.isEmpty())
{
currentLevel.push(nextLevel.pop());
}
}
}
}
/* height of Binary tree recursively */
private static Integer heightRecursively(BinaryTreeNode root) {
int leftHeight, rightHeight;
if (root == null)
return 0;
else {
leftHeight = heightRecursively(root.getLeft());
rightHeight = heightRecursively(root.getRight());
if (leftHeight > rightHeight)
return leftHeight + 1;
else
return rightHeight + 1;
}
}
/* height of Binary tree iteratively */
private static Integer height(BinaryTreeNode root) {
BinaryTreeNode temp;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
q.add(new BinaryTreeNode(-1));
int level = 0;
while (!q.isEmpty()) {
temp = q.poll();
if (temp.getData() == -1) {
if (!q.isEmpty())
q.add(new BinaryTreeNode(-1));
level++;
} else {
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
}
return level;
}
/* height of Binary tree recursively */
private static Integer heightRecursively(BinaryTreeNode root) {
int leftHeight, rightHeight;
if (root == null)
return 0;
else {
leftHeight = heightRecursively(root.getLeft());
rightHeight = heightRecursively(root.getRight());
if (leftHeight > rightHeight)
return leftHeight + 1;
else
return rightHeight + 1;
}
}
/* height of Binary tree recursively */
private static Integer heightRecursively(BinaryTreeNode root) {
int leftHeight, rightHeight;
if (root == null)
return 0;
else {
leftHeight = heightRecursively(root.getLeft());
rightHeight = heightRecursively(root.getRight());
if (leftHeight > rightHeight)
return leftHeight + 1;
else
return rightHeight + 1;
}
}
/* height of Binary tree iteratively */
private static Integer height(BinaryTreeNode root) {
BinaryTreeNode temp;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
q.add(new BinaryTreeNode(-1));
int level = 0;
while (!q.isEmpty()) {
temp = q.poll();
if (temp.getData() == -1) {
if (!q.isEmpty())
q.add(new BinaryTreeNode(-1));
level++;
} else {
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
}
return level;
}
Height Recursively
private static Integer heightRecursively(BinaryTreeNode root) {
int leftHeight, rightHeight;
if (root == null)
return 0;
else {
leftHeight = heightRecursively(root.getLeft());
rightHeight = heightRecursively(root.getRight());
if (leftHeight > rightHeight)
return leftHeight + 1;
else
return rightHeight + 1;
}
}
Height of Binary Tree Iteratively
private static Integer height(BinaryTreeNode root) {
BinaryTreeNode temp;
Queue<BinaryTreeNode> q = new LinkedBlockingDeque<BinaryTreeNode>();
q.add(root);
q.add(new BinaryTreeNode(-1));
int level = 0;
while (!q.isEmpty()) {
temp = q.poll();
if (temp.getData() == -1) {
if (!q.isEmpty())
q.add(new BinaryTreeNode(-1));
level++;
} else {
if (temp.getLeft() != null)
q.add(temp.getLeft());
if (temp.getRight() != null)
q.add(temp.getRight());
}
}
return level;
}
private static int[][] rotateMatrixBy90Degree(int[][] matrix, int n) {
for (int layer = 0; layer < n / 2; layer++) {
int first = layer;
int last = n - 1 - layer;
for (int i = first; i < last; i++) {
int offset = i - first;
int top = matrix[first][i];
matrix[first][i] = matrix[last - offset][first];
matrix[last - offset][first] = matrix[last][last - offset];
matrix[last - offset][last] = matrix[i][last];
matrix[i][last] = top;
}
}
System.out.println("Matrix After Rotating 90 degree:-");
printMatrix(matrix, n);
return matrix;
}
RepGayle L McDowell, CEO at CareerCup
Gayle Laakmann McDowell is the founder / CEO of CareerCup, which provides programming interview prep for candidates interviewing with Microsoft, Google ...
- Vir Pratap Uttam May 05, 2015