对称的二叉树
前言
//==================================================================
// 《剑指Offer——对称的二叉树》代码
// 题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和
// 它的镜像一样,那么它是对称的。
//==================================================================
一、示例
/************************************************************************
/*
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1 1
/ \ / \
2 2 2 2
\ \ / /
3 3 3 3
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
*/
*************************************************************************/
二、代码解析
1.新建.cpp文件
代码如下(示例):
//==================================================================
// 《剑指Offer——对称的二叉树》代码
// 题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和
// 它的镜像一样,那么它是对称的。
//==================================================================
#include<iostream>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
};
/*法一 对称遍历*/
bool isSymmerical1(TreeNode* root1, TreeNode* root2)
{
if (root1 == nullptr && root2 == nullptr)
{
return true;
}
if (root1 == nullptr || root2 == nullptr|| root1->val != root2->val)
{
return false;
}
return isSymmerical1(root1->left, root2->right) && isSymmerical1(root1->right, root2->left);
}
/*
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1 1
/ \ / \
2 2 2 2
\ \ / /
3 3 3 3
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
*/
bool isSymmetric1(TreeNode* root)
{
return isSymmerical1(root, root);
}
int main()
{
return 0;
}