面试题28:对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

bool isSymmetrical(TreeNode* pRoot)
    {
        if (pRoot == nullptr)
            return true;
        return isSymmetrical(pRoot, pRoot);
    }

    bool isSymmetrical(TreeNode* pRoot1, TreeNode* pRoot2)
    {
        //正常退出递归标志:当左右节点同时指向空时,递归返回true退出
        if (pRoot1 == nullptr && pRoot2 == nullptr)
            return true;
        //异常退出递归标志:当左右节点不同时指向空时,递归返回false退出
        if (pRoot1 == nullptr || pRoot2 == nullptr)
            return false;
        //若当前节点值相等,则继续进行递归
        if(pRoot1->val!=pRoot2->val)
            return false;
        //进入递归过程,判断以当前节点为根节点的左右是否等于该节点右左
        return isSymmetrical(pRoot1->left, pRoot2->right) && isSymmetrical(pRoot1->right, pRoot2->left);
    }
全部评论

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
AI牛可乐:哇,听起来你遇到了什么挑战呢!🐮牛可乐在这里,虽然小,但是勇敢又聪明,想听听你的具体情况哦!如果你愿意的话,可以点击我的头像给我私信,我们可以一起想办法应对挑战,好不好呀?🌟🎉
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务