目录
1.题目描述:2.解题思路:3.编程实现(Java):
1.题目描述:
操作给定的二叉树,将其变换为原二叉树的镜像。
2.解题思路:
求一棵树的镜像的过程:先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有的非叶结点的左、右子结点后,就可以得到该树的镜像。
如下面的例子,先交换根节点的两个子结点之后,我们注意到值为10、6的结点的子结点仍然保持不变,因此我们还需要交换这两个结点的左右子结点。做完这两次交换之后,我们已经遍历完所有的非叶结点。此时变换之后的树刚好就是原始树的镜像。
3.编程实现(Java):
public class TreeMirror_4 {
public void Mirror(TreeNode root
) {
if (root
!= null
) {
if (root
.left
!= null
|| root
.right
!= null
) {
TreeNode temp
= root
.right
;
root
.right
= root
.left
;
root
.left
= temp
;
Mirror(root
.left
);
Mirror(root
.right
);
}
}
}
static class TreeNode {
int val
= 0;
TreeNode left
;
TreeNode right
;
public TreeNode(int val
) {
this.val
= val
;
}
}
}