本文最后更新于:2020年6月28日 下午

题目描述:

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

实现如下:

//每一个节点都是每一棵子树的根节点,只须交换左右孩子节点即可
//注意输入空指针防御
/*输入样例
二叉树的镜像定义:源二叉树 
    	    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 *tmp = pRoot->left;//否则交换左右孩子的指向
		pRoot->left = pRoot->right;
		pRoot->right = tmp;
		Mirror(pRoot->left);//递归调用对左孩子镜像处理
		Mirror(pRoot->right);//递归调用对右孩子镜像处理
	}
};