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