当前位置: 首页 > news >正文

网站建设ui设计公司网站地图制作工具

网站建设ui设计公司,网站地图制作工具,厦门网红,腾讯云网站备案不能用阿里云二叉树OJ前言对称二叉树前言 本篇继续讲解二叉树OJ题目之对称二叉树 对称二叉树 题目链接:https://leetcode.cn/problems/symmetric-tree/description/ 该题要求比较这棵树是否对称,对称,指的是结构对称并且值也要对称,即对应…

二叉树OJ

  • 前言
  • 对称二叉树


前言

本篇继续讲解二叉树OJ题目之对称二叉树


对称二叉树

题目链接:https://leetcode.cn/problems/symmetric-tree/description/
在这里插入图片描述
在这里插入图片描述
该题要求比较这棵树是否对称,对称,指的是结构对称并且值也要对称,即对应节点相等,如上图示例2中,它的结构并不对称,因此不可视为对称树

再如示例1,结构对称,并且值也对称,即对称节点的值也相同,那么便可视为对称树

因为题目告知该树至少有一个节点,所以比较的自然是根节点的左右子树,那么我们可以延续判断两棵树是否相同的思路

解决该题有两种思路

我们以题目示例1的二叉树作为示例进行讲解

第一种思路:
我们将该树根节点的左子树记为p树,右子树记为q树,之后翻转p树或者q树中任意一个,得到新的p树或q树,最后比较p树和q树是否相等即可
在这里插入图片描述
翻转p树后如图所示:
在这里插入图片描述
此时我们比较p树和q树是否相同即可,若为相同树,则原二叉树为对称树,若不为相同树则否
代码实现:
在这里插入图片描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool isSameTree(struct TreeNode* p,struct TreeNode* q)
{if(p == NULL && q == NULL){return true;}else if(p == NULL){return false;}else if(q == NULL){return false;}else if(p->val != q->val){return false;}return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}
void invertTree(struct TreeNode* root)
{if(root == NULL){return;}struct TreeNode* tmp = root->left;root->left = root->right;root->right = tmp;invertTree(root->left);invertTree(root->right);
}
bool isSymmetric(struct TreeNode* root) {invertTree(root->left);return isSameTree(root->left,root->right);
}

第二种思路:
我们将该树根节点的左子树记为p树,右子树记为q树,之后比较p树和q树是否对称即可
在这里插入图片描述
如第一种思路,我们是将p树q树中的一个翻转后比较是否相同,而该思路则是省去翻转的步骤,直接比较结构是否对称,对称点的值是否相等

例如,我们比较p、q两树的根节点是否存在且值相同,若不存在直接返回true,代表该树对称,因为根节点的左右子树均为空;若存在且值相同,则继续往下执行

此时我们调用的判断相同树的函数,唯一不同的一点是我们在该函数中传参时传的是p树的左子树和q树的右子树比较,以及p树的右子树和q树的左子树比较

如果p树左子树与q树的右子树相同,说明外侧是对称的

如果p树右子树和q树的左子树相同,说明内侧是对称的

因此,当p树的左子树和q树的右子树相同并且p树的右子树和q树的左子树也相同时,我们可以说该二叉树是一棵对称树

代码实现:在这里插入图片描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool isSameTree(struct TreeNode* p,struct TreeNode* q)
{if(p == NULL && q == NULL){return true;}else if(p == NULL){return false;}else if(q == NULL){return false;}else if(p->val != q->val){return false;}return isSameTree(p->left,q->right) && isSameTree(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root) {return isSameTree(root->left,root->right);
}
http://www.dtcms.com/a/547924.html

相关文章:

  • 个人帮企业做网站开源阅读app
  • 公司做网站找谁做网站的公司宁波网站制作维护
  • 网站建设教程pdf下载旅游类网站建设教案
  • 做网站的框架组合完整网站开发看什么书
  • 微网站建设对微网站进行策划房地产景区网站建设方案
  • 加强意识形态建设 办好政协网站wordpress 面包插件
  • 工程中标查询网站网站建设开户行
  • 韩国风格网站模板下载最新的产品代理有哪些
  • flash网站作品欣赏推广赚钱小程序
  • 免费网站流量ui作品集 网站怎么做
  • 建设工程重要网站广州专业做网站排名哪家好
  • 网站建设公司工作枯燥吗织梦网站发布的哪些产品和文章放在a文件可以吗
  • 计算机网站开发要考什么证wordpress美化下载插件
  • html网站系统贵州人才网最新招聘建筑类
  • 包头网站制作 建设东莞公司官网建站
  • 太原网站建设培训班300网站建设
  • 哪个网站可以免费下载ppt模板安阳区号12345
  • 上海建设人才网站信息推广平台有哪些
  • 大兴安岭网站制作做电子政务网站
  • 做网站用jsp还是html电子信息工程专业招聘信息网
  • 南京做网站的公司排名线上广告代理平台
  • 哪个网站建站好500平台wordpress 视频站模板下载
  • 网站建设门店牌子苏州企业宣传片制作公司
  • 定做网站多少钱济宁建站公司
  • 想开网站建设公司免费制作网站的软件
  • 开发网站公司收费免费发帖的平台有哪些
  • 网站排名快速提升工具石家庄信息门户网站制作费用
  • 扁平化风格 网站传奇游戏代理0加盟费
  • 网站开发设计知乎网店美工考试
  • 网站分类页标题加长四平网站建设电话