19 二叉树的镜像

二叉树的镜像

题目描述:

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

解题思路:

跟之前的题目有些类似的地方:

看到树的题目,大多都会用递归的思想来解决

  1. 如果想要将整个树都做成镜像,就是要将所有结点的左右子树调换位置
  2. 所以,先调换第二层的结点,将左右结点互换
  3. 递归调用该函数,将根结点的左右子结点(也就是刚刚被调换过的)作为新的“根”结点,调换其左右子结点
  4. 退出的条件是遇到叶子结点,即左右子结点均为NULL的结点

代码

class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        // 如果是空指针,则直接返回
        if (pRoot == NULL) 
            return;

        // 如果只有根结点,没有子结点,则也直接返回
        if (pRoot->left == NULL && pRoot->right == NULL)
            return;

        // 设置一个空的指针,作为中转站
        TreeNode *temp;
        temp = pRoot->left;
        pRoot->left = pRoot->right;
        pRoot->right = temp;

        Mirror(pRoot->left);
        Mirror(pRoot->right);

    }
};

2018.10.10

你可能感兴趣的:(19 二叉树的镜像)