http://www.geeksforgeeks.org/write-an-efficient-c-function-to-convert-a-tree-into-its-mirror-tree/
http://geekyjumps.blogspot.in/2013/09/create-mirror-of-binary-tree.html
Algorithm - Mirror(tree):
(1) Call Mirror for left-subtree i.e., Mirror(left-subtree) (2) Call Mirror for right-subtree i.e., Mirror(left-subtree) (3) Swap left and right subtrees. temp = left-subtree left-subtree = right-subtree right-subtree = temp
Program- Mirror(tree):
public static void mirrorTree(Node root){ if(root == null) return; Node tmp = root.left; root.left = root.right; root.right = tmp; mirrorTree(root.left); mirrorTree(root.right); }
static Node mirrorBT(Node root)
{
//Base conditions
if(root == null) return null;
if(root.left == null && root.right == null) return root;
if(root.left == null)
{
root.left = root.right;
root.right = null;
return root;
}
if(root.right == null)
{
root.right = root.left;
root.left = null;
return root;
}
//
Node leftTree = mirrorBT(root.left);
Node rightTree = mirrorBT(root.right);
// swap the child nodes of root
root.left = rightTree;
root.right = leftTree;
return root;
}
No comments:
Post a Comment