JZ18 二叉树的镜像*

题目描述

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

输入描述:

二叉树的镜像定义:源二叉树 
            8
           /  \
          6   10
         / \  / \
        5  7 9 11
        镜像二叉树
            8
           /  \
          10   6
         / \  / \
        11 9 7  5

思路

求二叉树的过程:
(1)交换根节点的左、右子树
(2)交换值为10的节点的左、右子节点;
(3)交换值为6的节点的左、右子节点。

总结一下过程:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。交换完所有非叶子节点的左、右子节点后,就得到了树的镜像。

代码

class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(pRoot==NULL)
            return;
        if(pRoot->left==NULL&&pRoot->right==NULL)
            return;
        TreeNode* temp;
        Mirror(pRoot->left);
        Mirror(pRoot->right);
        temp=pRoot->left;
        pRoot->left=pRoot->right;
        pRoot->right=temp;
    }
};
全部评论

相关推荐

12-24 20:52
武汉大学 Java
点赞 评论 收藏
分享
牛客nb666号:见天才的门槛罢了查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务