《剑指Offer——对称的二叉树》代码

对称的二叉树


前言

//==================================================================
// 《剑指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;
}
上一篇:使用Spring Security组合x509证书和表单登录


下一篇:failed to teardown pod "coredns-7ff77c879f-hkj5z_kube-system : x509: certificate signed by unkn