首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

剑指offer——对称的二叉树

概述

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


思路

  1. root1与root2都为空,返回true;
  2. 否则,root1与root2其中一个为空,那么返回false;
  3. 否则,若root1与root2的根节点不相等,那么返回false;
  4. 否则,递归判断root1的左子树和root2的右子树、root2的左子树和root1的右子树是否对称。

C++ AC代码

代码语言:javascript
复制
#include <iostream>
using namespace std; 

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){
            return this->IsSymmetrical(pRoot,pRoot);        
        }

        bool IsSymmetrical(TreeNode* root1,TreeNode* root2){
            if(root1 == NULL && root2 == NULL){
                return true;
            }
            if(root1 == NULL || root2 == NULL){
                return false;
            }
            if(root1->val != root2->val){
                return false;
            }else{
                return this->IsSymmetrical(root1->left,root2->right)&& this->IsSymmetrical(root1->right,root2->left);
            }
        }
};
下一篇
举报
领券