题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
思路:这里我们从根节点看,从根节点开始,左右子节点在镜像时已经对换,如上图中的6 10 变成了 10 6; 这里可以表示左右子树对换,这里需要注意的是,是根节点的左子树和右子树互换,而不是左节点和右节点,之后则又是左右节点的左右子树对换,如此类推。
要把眼光放在左右子树而不是两个节点,这样这题难度就不大了,就是一个先序的递归,存在左右子树就交换。
代码如下:
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if(pRoot == NULL)
return;
if(pRoot->left == NULL && pRoot->right == NULL)
return;
TreeNode * m = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = m;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
};