package tree; import java.util.LinkedList; import java.util.Queue; /* Write a Function to Convert a given Binary Tree into its Mirror Tree recursively. (Mirror Tree: Mirror Tree of a binary tree is where left and right child of every node of given binary tree is interexchange.) Input: output: 50 50 / \ / \ / \ / \ 20 80 80 20 / \ / \ / \ / \ 10 30 70 100 100 70 30 10 */ public class MirrorOfBinaryTreeWithRecursion { private Node rootNode; public static void main(String[] args) { new MirrorOfBinaryTreeWithRecursion(); } public MirrorOfBinaryTreeWithRecursion(){ addNode(rootNode, 50); addNode(rootNode, 20); addNode(rootNode, 80); addNode(rootNode, 10); addNode(rootNode, 30); addNode(rootNode, 70); addNode(rootNode, 100); printTreeLevelOrder(rootNode); Node mirrorRoot = createMirror(rootNode); System.out.println(); printTreeLevelOrder(mirrorRoot); } private Node createMirror(Node rootNode) { if(rootNode==null){ return null; } Node left = createMirror(rootNode.getLeft()); Node right = createMirror(rootNode.getRight()); rootNode.setRight(left); rootNode.setLeft(right); return rootNode; } private void printTreeLevelOrder(Node rootNode){ if(rootNode==null) return; Queue<Node> queue = new LinkedList<Node>(); queue.add(rootNode); while(!queue.isEmpty()){ Node obj = (Node)queue.poll(); System.out.print(obj.getData() + " "); if(obj.getLeft()!=null) queue.add(obj.getLeft()); if(obj.getRight()!=null) queue.add(obj.getRight()); } } private void addNode(Node rootNode, int data){ if(rootNode==null){ Node temp1 = new Node(data); this.rootNode=temp1; }else{ addNodeInProperPlace(rootNode, data); } } private void addNodeInProperPlace(Node rootNode, int data){ if(data>rootNode.getData()){ if(rootNode.getRight()!=null){ addNode(rootNode.getRight(), data); }else{ Node temp1 = new Node(data); rootNode.setRight(temp1); } }else if(data<rootNode.getData()){ if(rootNode.getLeft()!=null){ addNode(rootNode.getLeft(), data); }else{ Node temp1 = new Node(data); rootNode.setLeft(temp1); } } } }
Questions on Stack, Queues, Linkedlist, Binary Trees, Sorting, Searching, Graphs etc with solution using Java Language.
Friday, 26 June 2015
Given a Binary Tree or a Binary Search Tree, Convert it into its Mirror Tree recursively.
Labels:
Binary Search Tree,
Binary Tree