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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述:操作给定的二叉树,将其变换为源二叉树的镜像思路: 如上图:交换根结点的左右子树;再递归对左子树进行交换;...
    fighting_css阅读 258评论 0 0
  • 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 代码实现 主要思路 很简单的递归题,三步走:(1)特殊输入...
    _minimal阅读 144评论 0 0
  • 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 思路:先前序遍历这个树的每个节点,如果遍历到的节点有子...
    Felicia1993阅读 209评论 0 0
  • 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 代码如下: 测试代码1: 测试代码2: 测试代码3: ...
    3e1094b2ef7b阅读 394评论 0 0
  • 写日期的时候突然反应过来今天水逆是不是终于该结束了哈哈。 今天上了六节课。 上午的两节初中地理课,我自...
    _xxxx_l阅读 228评论 0 0