Posts

Spiral order traversal of a tree - Java

public class TreeTraversal { public static void main(String[] args) { Node node = new Node(40); node.left = new Node(35); node.right = new Node(50); node.left.left = new Node(30); node.left.right = new Node (38); node.left.left.right = new Node(33); node.left.left.left = new Node(28); spiralOrder(node); } public static void spiralOrder(Node root){ if (root == null) return; boolean dir = false; int height = height(root); for (int i = 1; i <= height; i++) { printSpiralLevelOrder(root, i, dir); dir = !dir; } } public static void printSpiralLevelOrder(Node root, int level, boolean dir){ if(root == null) return; if(level == 1) System.out.print(root.value); else if(level > 1){ if(dir){ printSpiralLevelOrder(root.left, level-1, dir); printSpiralLevelOrder(root.right, level-1, dir); } else { printSpiralLevelOrder(root.right, level-1, dir); printSpiralLevelOrder(root.left, level-1, dir); ...

Level Order Traversal using Queue - Java

public class LevelOrderUsingQueue { public static void main(String[] args) { Node node = new Node(40); node.left = new Node(35); node.right = new Node(50); node.left.left = new Node(30); node.left.right = new Node (38); node.left.left.right = new Node(33); node.left.left.left = new Node(28); levelOrderWithQueue(node); } public static void levelOrderWithQueue(Node root){ Node tempNode; Node[] queue = new Node[20]; int front = 0, rear = 0; tempNode = root; while(tempNode != null){ System.out.println(tempNode.value); if(tempNode.left != null){ queue[rear] = tempNode.left; rear++; } if(tempNode.right != null){ queue[rear] = tempNode.right; rear++; } front++; tempNode = queue[front - 1]; } } }

Level Order Traversal of a binary tree - Java

package tree; public class TreeTraversal { public static void main(String[] args) { Node node = new Node(40); node.left = new Node(35); node.right = new Node(50); node.left.left = new Node(30); node.left.right = new Node (38); levelOrder(node); } public static void levelOrder(Node root) { if(root == null) return; int height = height(root); for (int i = 1; i <= height; i++) { printLevelOrder(root, i); } } public static void printLevelOrder(Node node, int level){ if(node == null) return; if(level == 1) System.out.print(node.value); else if(level > 1){ printLevelOrder(node.left, level-1); printLevelOrder(node.right, level-1); } } public static int height(Node node) { if(node == null) return 0; int lHeight = height(node.left); int rHeight = height(node.right); if(lHeight > rHeight) return lHeight + 1; else return rHeight + 1; } } class Node{ Node left; Node righ...

Valid Parentheses - Java

public class PrintParanthesis { public static void main(String[] args) { printParanthesis(3,3,""); } private static void printParanthesis(int leftRemain, int rightRemain, String currentString) { if(rightRemain==0) { System.out.println(currentString); return; } if(leftRemain>0){ printParanthesis(leftRemain-1, rightRemain, currentString+"("); if(leftRemain < rightRemain) printParanthesis(leftRemain, rightRemain-1, currentString+")"); } else printParanthesis(leftRemain, rightRemain-1, currentString+")"); } } Explanation: pP(2,3,"(")--pP(1,3,"((")--pP(0,3,"(((")--pP(0,2,"((()")--pP(0,1,"((())")--pP(0,0,"((()))") ---> "((()))"           |                     |           |                    pP(1,2,"(()")--pP(0,2,"(()(")--pP(0,1,"(()()")--pP(0,0,"(()())") ---...

Is Binary Search Tree - Java

public class IsBST { public static boolean isBST(Tree treeNode) { return isBST(treeNode,Integer.MIN_VALUE,Integer.MAX_VALUE); } private static boolean isBST(Tree treeNode, int minValue, int maxValue) { if(treeNode == null) return true; if(treeNode.data < minValue || treeNode.data > maxValue) return false; if(!isBST(treeNode.left,minValue,treeNode.data) && !isBST(treeNode.right,treeNode.data,maxValue)) return false; return true; } public static void main(String[] args) { Tree myTree = new Tree(4); myTree.left = new Tree(2); myTree.right = new Tree(6); myTree.left.left = new Tree(1); myTree.left.right = new Tree(3); myTree.right.left = new Tree(7); System.out.println(Boolean.toString(isBST(myTree))); } } class Tree{ int data; Tree left; Tree right; public Tree(int data) { this.data = data; this.left = this.right = null; } }

Binary Search in sorted array - Java

public class BinarySearch { public static void main(String[] args) { int[] nums = {1,2,3,4,5,6,7,8}; int num = 6;         binSearch(nums, num); } public static void binSearch(int[] nums,int num){ int start = 0; int end = nums.length - 1; while(end > start){ int mid = (start+end)/2; if(nums[mid] == num){ System.out.println("Number found" +num); break; } else if(nums[mid] > num) end = mid-1; else if(nums[mid] < num) start = mid+1; } } }

Reverse Linked List - Java

package excel; public class ReverseLinkedList { public static class List{ int value; List next; public List(int value){ this.value = value; } public String toString(){ List l = this; String listInString = ""; while(l != null){ listInString += l.value + "-->"; l = l.next; } return listInString + "tail"; } } public static void main(String args[]) { List l = new List(1); l.next = new List(2); l.next.next = new List(3); l.next.next.next = new List(4); System.out.println(l.toString()); System.out.println(reverse(l).toString()); } public static List reverse(List l){ if(l == null || l.next == null) return l; List remainingReverseList = reverse(l.next); List cur = remainingReverseList ; while(cur.next != null) cur = cur.next; cur.next = l; l.next = null; return remainingReverseList ; } } input: 1-->2-->3-->4--...