思路
定义一个新的节点,交换左右子树,递归左右子树。
代码:
/* 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; } if(pRoot->left==NULL&&pRoot->right==NULL) //只有一个根节点,什么也不返回 { return; } TreeNode * temp = pRoot->left;//定义一个新的节点, pRoot->left=pRoot->right;//交换左右子树 pRoot->right = temp; if(pRoot->left!=NULL)//递归左子树 { Mirror(pRoot->left); } if(pRoot->right!=NULL)//递归右子树 { Mirror(pRoot->right); } } };