Problem Description:
Operates the given two-fork tree and transforms it into a mirror of the source binary tree. The binary tree node is defined as:
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
Public TreeNode (int val) {
this.val = val;
}
}
For example:
8
/ \
6
/\ /\
5 7 9 One
mirror binary tree
8
/
ten 6
/\ /\
9 7 5
Ideas:
Starting from the root node, recursive, first swap the left and right subtree, and then transform the left and right subtree to its mirror image.
Code:
public void Mirror (TreeNode root) {
if (root = null) {return
;
}
if (Root.left = = NULL && Root.right = null) {return
;
}
TreeNode tmp = Root.left;
Root.left = root.right;
Root.right = tmp;
if (root.left!= null) {//Here the null conditions are added to terminate recursion in a timely manner, less recursion is performed and the pressure on the stack storage is reduced
Mirror (root.left);
}
if (root.right!= null) {
Mirror (root.right);
}
}