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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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