操作给定的二叉树,将其变换为源二叉树的镜像。

Posted by DH on May 2, 2017

题目

操作给定的二叉树,将其变换为源二叉树的镜像。


二叉树的镜像定义:源二叉树 
            8
           /  \
          6   10
         / \  / \
        5  7 9 11

        镜像二叉树
            8
           /  \
          10   6
         / \  / \
        11 9 7  5

分析

思路比较简单:

遍历整个二叉树,当被遍历的当前节点的左右孩子不为空时,进行交换。直到所有非叶子节点的左右孩子被交换完成,结束。

可以用递归的解法,具体代码如下:

代码

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        if(root == null)
            return;

        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;

        Mirror(root.left);
        Mirror(root.right);
    }
}