美文网首页
二叉树镜像

二叉树镜像

作者: analanxingde | 来源:发表于2018-04-11 16:05 被阅读9次

判断一个二叉树是不是镜像的

思路:
定义一种先遍历右子树再遍历左子树的遍历方法,与相应的对称遍历结果一致,则证明二叉树对称。
对于树的遍历,一般采用的方法为递归。
只需要分别考察:R1->left与R2->right比较,R2->left与R1->right比较即可。
注意:为了能够将两字小子树传入,需再定以一个两个参数的函数。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    bool isSymmetrical(TreeNode* pRoot)
    {
        if(pRoot==nullptr)
            return true;
        return isSymmetrical(pRoot,pRoot);
    }
    bool isSymmetrical(TreeNode* pLeft,TreeNode* pRight)
    {
        if(pLeft==nullptr && pRight==nullptr)
            return true;
        if(pLeft==nullptr || pRight==nullptr)
            return false;
        if(pLeft->val!=pRight->val)
            return false;
        return isSymmetrical(pLeft->right,pRight->left) && isSymmetrical(pLeft->left,pRight->right);
    }

};

求一个二叉树的镜像

思路:对于每一个子树自底向上调用mirror操作,然后对顶部的两个左右子树指针进行操作。

/*
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==nullptr||(pRoot->left==nullptr &&pRoot->right==nullptr))
            return;
        if(pRoot->left!=nullptr)
            Mirror(pRoot->left);
        if(pRoot->right!=nullptr)
            Mirror(pRoot->right);
        TreeNode* temp=new TreeNode(0);//中间辅助节点
        temp=pRoot->right;
        pRoot->right=pRoot->left;
        pRoot->left=temp;

    }
};

相关文章

  • 《剑指offer》— JavaScript(18)二叉树的镜像

    二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 相关知识 二叉树的镜像定义:源二叉树 镜像二...

  • JZ-018-二叉树的镜像

    二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。题目链接: 二叉树的镜像[https://ww...

  • 剑指offer(java版)——解决面试题的思路

    1.镜像二叉树 题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ \...

  • 二叉树的镜像-java

    二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ 6...

  • 剑指offer-18~20

    18.二叉树的镜像操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ 6 10/...

  • 二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述 二叉树的镜像定义:源二叉树与镜像二叉树 代码 总...

  • 二叉树镜像(反转二叉树)

    二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 相关知识 二叉树的镜像定义: 思路 有关二叉...

  • 剑指offer-二叉树的镜像

    操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树----------8-----...

  • 二叉树的镜像

    题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树   ...

  • 18. 二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 代码实现

网友评论

      本文标题:二叉树镜像

      本文链接:https://www.haomeiwen.com/subject/kosahftx.html