牛客网剑指Offer——二叉树的镜像

题目描述

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

输入描述:

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

解题思路

分析这两棵树的特点,可以总结出求镜像的步骤如下图所示。


可以看出,求镜像的步骤如下:利用递归思想,交换根节点的左右孩子,再分别对左孩子和右孩子进行镜像操作。

代码

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if( pRoot == NULL )
            return;
        TreeNode* temp = pRoot->left;
        pRoot->left = pRoot->right;
        pRoot->right = temp;
        Mirror(pRoot->left);
        Mirror(pRoot->right);
        
        return;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_36132127/article/details/80184199