Question :
Write a Program in Java to print the mirror image of a given binary tree. Example is provided in following diagram
Solution :
Do a normal BFS traversal. In each call copy the left child's content to create right node of the mirror tree and the right child's content to create left child.
Code :
public class TreeMirrorImageCreator { public static Node createMirrorImage(Node originalNode,Node mirroredNode){ mirroredNode.setValue(originalNode.getValue()); if(originalNode.getRight() != null){ mirroredNode.setLeft(createMirrorImage(originalNode.getRight(),new Node(0))); } if(originalNode.getLeft() != null){ mirroredNode.setRight(createMirrorImage(originalNode.getLeft(), new Node(0))); } return mirroredNode; } }
Now lets write the code to test out this code.
public static void main(String args[]){ Node root = new Node(1); Node l = new Node(2); Node r = new Node(3); Node l1 = new Node(12); Node l2 = new Node(13); Node r1 = new Node(6); Node r2 = new Node(8); root.setLeft(l); root.setRight(r); l.setLeft(l1); l.setRight(l2); r.setLeft(r1); r.setRight(r2); System.out.println("Orig Tree : "); LevelTraversal.printLeveltraversal(root); Node mirroredRoot = new Node(0); TreeMirrorImageCreator.createMirrorImage(root,mirroredRoot); System.out.println("Mirrored Tree : "); LevelTraversal.printLeveltraversal(mirroredRoot); }
No comments:
Post a Comment