当前位置:网站首页>力扣练习——41 对称二叉树
力扣练习——41 对称二叉树
2022-08-02 04:18:00 【qq_43403657】
41 对称二叉树
1.问题描述
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
二叉树[1,2,2,null,3,3,null,5,-2,-2,5]是对称的。
1
/ \
2 2
\ /
3 3
/ \ / \
5 -2 -2 5
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
可使用以下main函数:
#include
#include
#include
#include
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(NULL), right(NULL) {}
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
TreeNode* inputTree()
{
int n,count=0;
char item[100];
cin>>n;
if (n==0)
return NULL;
cin>>item;
TreeNode* root = new TreeNode(atoi(item));
count++;
queue<TreeNode*> nodeQueue;
nodeQueue.push(root);
while (count<n)
{
TreeNode* node = nodeQueue.front();
nodeQueue.pop();
cin>>item;
count++;
if (strcmp(item,"null")!=0)
{
int leftNumber = atoi(item);
node->left = new TreeNode(leftNumber);
nodeQueue.push(node->left);
}
if (count==n)
break;
cin>>item;
count++;
if (strcmp(item,"null")!=0)
{
int rightNumber = atoi(item);
node->right = new TreeNode(rightNumber);
nodeQueue.push(node->right);
}
}
return root;
}
int main()
{
TreeNode* root;
root=inputTree();
bool res=Solution().isSymmetric(root);
cout<<(res?“true”:“false”);
}
2.输入说明
首先输入结点的数目n(注意,这里的结点包括题中的null空结点)
然后输入n个结点的数据,需要填充为空的结点,输入null。
3.输出说明
输出true或false
4.范例
输入
11
1 2 2 null 3 3 null 5 -2 -2 5
输出
true
5.代码
#include <iostream>
#include <queue>
#include <cstdlib>
#include <cstring>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(NULL), right(NULL) {
}
TreeNode(int x) : val(x), left(NULL), right(NULL) {
}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {
}
};
TreeNode* inputTree()
{
int n, count = 0;
char item[100];
cin >> n;
if (n == 0)
return NULL;
cin >> item;
TreeNode* root = new TreeNode(atoi(item));
count++;
queue<TreeNode*> nodeQueue;
nodeQueue.push(root);
while (count < n)
{
TreeNode* node = nodeQueue.front();
nodeQueue.pop();
cin >> item;
count++;
if (strcmp(item, "null") != 0)
{
int leftNumber = atoi(item);
node->left = new TreeNode(leftNumber);
nodeQueue.push(node->left);
}
if (count == n)
break;
cin >> item;
count++;
if (strcmp(item, "null") != 0)
{
int rightNumber = atoi(item);
node->right = new TreeNode(rightNumber);
nodeQueue.push(node->right);
}
}
return root;
}
bool cmp(TreeNode *tree1, TreeNode *tree2)
{
//1.两棵树均为空
if (tree1 == NULL && tree2 == NULL)
return true;
//2.有一棵树非空或者两个根节点值不相等
if (tree1 == NULL || tree2 == NULL || tree1->val != tree2->val)
return false;
//3.比较左子树的右节点和右子树的左节点,左子树的左节点和右子树的右节点
return cmp(tree1->left, tree2->right) && cmp(tree1->right, tree2->left);
}
bool isSymmetric(TreeNode *root)
{
//1.树为空
if (root == NULL)
return true;
//2.判断左右子树
return cmp(root->left, root->right);
}
int main()
{
TreeNode* root;
root = inputTree();
bool res = isSymmetric(root);
cout << (res ? "true" : "false")<<endl;
}
边栏推荐
- 【FreeRTOS】12 任务通知——更省资源的同步方式
- Andrew Ng's Machine Learning Series Course Notes - Chapter 18: Application Example: Image Text Recognition (Application Example: Photo OCR)
- 吴恩达机器学习系列课程笔记——第六章:逻辑回归(Logistic Regression)
- Deep blue college - handwritten VIO operations - the first chapter
- Unreal回放系统剖析(上)
- alibaba数据同步组件canal的实践整理
- 什么是接触电流怎么测?
- 深度剖析-class的几个对象(utlis,component)-瀑布流-懒加载(概念,作用,原理,实现步骤)
- (一)代码输出题 —— reverse
- 安装部署 Kubernetes 仪表板(Dashboard)
猜你喜欢
随机推荐
如何解决QByteArray添加quint16双字节时错误?
吴恩达机器学习系列课程笔记——第七章:正则化(Regularization)
CODESYS指针型变量编程应用(配方)
【Interview】Recruitment requirements
线代005
浅学一下二叉树的顺序存储结构——堆
数据复制系统设计(2)-同步复制与异步复制
如果有些字段不想进行序列化怎么办?
论人生自动化
Scientific research notes (5) SLAC WiFi Fingerprint+ Step counter fusion positioning
ADSP21489仿真:Failed to set breakpoint: Can‘t set breakpoints in the current state: Running
【STM32】ADC采集光敏数据(不看库函数手册进行配置)
多主复制的适用场景(1)-多IDC
Jetson Nano 2GB Developer Kit Installation Instructions
如何让固定点的监控设备在EasyCVR平台GIS电子地图上显示地理位置?
今天突然下雨
EasyCVR视频广场切换通道,视频播放协议异常的问题修复
ScholarOne Manuscripts submits journal LaTeX file and cannot convert PDF successfully!
C语言可以应用在哪些领域?
CaDDN paper reading of monocular 3D target detection









