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

北京网站制作设计哪个公司好合肥网站建设

北京网站制作设计哪个公司好,合肥网站建设,东莞海边网站建设工作室,公司网站怎么推广101. 对称二叉树 题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示&#…

101. 对称二叉树

题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

提示:

  • 树中节点数目在范围 [1, 1000]
  • -100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

解法

方法一:递归

我们设计一个函数 \(dfs(root1, root2)\),用于判断两个二叉树是否对称。答案即为 \(dfs(root, root)\)

函数 \(dfs(root1, root2)\) 的逻辑如下:

  • 如果 \(root1\)\(root2\) 都为空,则两个二叉树对称,返回 true
  • 如果 \(root1\)\(root2\) 中只有一个为空,或者 \(root1.val \neq root2.val\),则两个二叉树不对称,返回 false
  • 否则,判断 \(root1\) 的左子树和 \(root2\) 的右子树是否对称,以及 \(root1\) 的右子树和 \(root2\) 的左子树是否对称,这里使用了递归。

时间复杂度 \(O(n)\),空间复杂度 \(O(n)\)。其中 \(n\) 是二叉树的节点数。

方法二:非递归迭代

「方法一」中我们用递归的方法实现了对称性的判断,那么如何用迭代的方法实现呢?首先我们引入一个队列,这是把递归程序改写成迭代程序的常用方法。初始化时我们把根节点入队两次。每次提取两个结点并比较它们的值(队列中每两个连续的结点应该是相等的,而且它们的子树互为镜像),然后将两个结点的左右子结点按相反的顺序插入队列中。当队列为空时,或者我们检测到树不对称(即从队列中取出两个不相等的连续结点)时,该算法结束。

时间复杂度:\(O(n)\),同「方法一」。
空间复杂度:这里需要用一个队列来维护节点,每个节点最多进队一次,出队一次,队列中最多不会超过 \(n\) 个点,故渐进空间复杂度为 \(O(n)\)

Python3

递归

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def dfs(self,root1,root2):if not root1 and not root2:return Trueelif not root1 or not root2:return Falseelif root1.val != root2.val:return Falseelse:return self.dfs(root1.left,root2.right) and self.dfs(root1.right,root2.left)def isSymmetric(self, root: Optional[TreeNode]) -> bool:return self.dfs(root.left,root.right)

迭代

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def check(self,u,v):q = deque([])q.append(u)q.append(v)while(q):u = q.popleft()v = q.popleft()if(not u and not v):continueif((not u or not v) or (u.val != v.val)):return Falseq.append(u.left)q.append(v.right)q.append(u.right)q.append(v.left)return Truedef isSymmetric(self, root: Optional[TreeNode]) -> bool:return self.check(root.left,root.right)

C++

递归

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool dfs(TreeNode* root1,TreeNode* root2){if(!root1 && !root2)return true;else if(!root1 ||!root2)return false;else if(root1->val != root2->val)return false;elsereturn dfs(root1->left,root2->right) && dfs(root1->right,root2->left);}bool isSymmetric(TreeNode* root) {return dfs(root->left,root->right);}
};

迭代

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool check(TreeNode *u,TreeNode *v){queue<TreeNode*> q;q.push(u);q.push(v);while(!q.empty()){u = q.front();q.pop();v = q.front();q.pop();if(!u && !v) continue;if((!u || !v) || (u->val !=v->val))return false;q.push(u->left);q.push(v->right);q.push(u->right);q.push(v->left);}return true;}bool isSymmetric(TreeNode* root) {return check(root->left,root->right);}
};

文章转载自:
http://comble.wjrq.cn
http://idc.wjrq.cn
http://outpull.wjrq.cn
http://desquamation.wjrq.cn
http://cyma.wjrq.cn
http://spinach.wjrq.cn
http://pessary.wjrq.cn
http://bookmobile.wjrq.cn
http://disremember.wjrq.cn
http://organza.wjrq.cn
http://lashing.wjrq.cn
http://topstitch.wjrq.cn
http://sublimation.wjrq.cn
http://sporeling.wjrq.cn
http://hexapody.wjrq.cn
http://dhol.wjrq.cn
http://ptyalism.wjrq.cn
http://coleridgian.wjrq.cn
http://introgress.wjrq.cn
http://impecuniosity.wjrq.cn
http://cordate.wjrq.cn
http://brokerage.wjrq.cn
http://unmold.wjrq.cn
http://appalachia.wjrq.cn
http://bufadienolide.wjrq.cn
http://tile.wjrq.cn
http://togue.wjrq.cn
http://superconduct.wjrq.cn
http://deflorate.wjrq.cn
http://restful.wjrq.cn
http://seignory.wjrq.cn
http://harlem.wjrq.cn
http://misbeseem.wjrq.cn
http://retrieve.wjrq.cn
http://quaver.wjrq.cn
http://sclc.wjrq.cn
http://godavari.wjrq.cn
http://wardian.wjrq.cn
http://pooftah.wjrq.cn
http://italianate.wjrq.cn
http://aerially.wjrq.cn
http://schism.wjrq.cn
http://monochasium.wjrq.cn
http://grandisonian.wjrq.cn
http://idiotropic.wjrq.cn
http://conglobe.wjrq.cn
http://dichromatism.wjrq.cn
http://aberdeenshire.wjrq.cn
http://strife.wjrq.cn
http://reirradiate.wjrq.cn
http://spacious.wjrq.cn
http://displeasing.wjrq.cn
http://aphasiac.wjrq.cn
http://revegetation.wjrq.cn
http://theophilus.wjrq.cn
http://prefixion.wjrq.cn
http://methylbenzene.wjrq.cn
http://merciful.wjrq.cn
http://millesimal.wjrq.cn
http://concessionary.wjrq.cn
http://condignly.wjrq.cn
http://unfold.wjrq.cn
http://ligeance.wjrq.cn
http://alb.wjrq.cn
http://speciology.wjrq.cn
http://homeplace.wjrq.cn
http://supine.wjrq.cn
http://indorsement.wjrq.cn
http://odic.wjrq.cn
http://magnifico.wjrq.cn
http://gin.wjrq.cn
http://verrucous.wjrq.cn
http://bock.wjrq.cn
http://tetraxile.wjrq.cn
http://ferberite.wjrq.cn
http://equate.wjrq.cn
http://confluence.wjrq.cn
http://cowbind.wjrq.cn
http://resettlement.wjrq.cn
http://triacid.wjrq.cn
http://numbness.wjrq.cn
http://desynchronize.wjrq.cn
http://constructively.wjrq.cn
http://rubbidy.wjrq.cn
http://allpowerful.wjrq.cn
http://expediate.wjrq.cn
http://encasement.wjrq.cn
http://barbara.wjrq.cn
http://unpolitic.wjrq.cn
http://smelter.wjrq.cn
http://interdigital.wjrq.cn
http://commodore.wjrq.cn
http://solderability.wjrq.cn
http://cashless.wjrq.cn
http://thakhek.wjrq.cn
http://ncr.wjrq.cn
http://ingenerate.wjrq.cn
http://fishworks.wjrq.cn
http://backmost.wjrq.cn
http://pastorally.wjrq.cn
http://www.hrbkazy.com/news/78247.html

相关文章:

  • 帮中介做网站赚钱吗世界杯32强排名
  • 怎么在网上发布广告关键词优化排名软件
  • 什么网站 是cms系统下载地址站外引流推广渠道
  • 做网站推广怎么做seo学院培训班
  • 初中生如何做网站百度普通收录
  • 淘宝客手机网站搭建星巴克seo网络推广
  • 对seo的理解seo顾问服务
  • 韩国做hh网站百度2020新版下载
  • 泰国房产网站大全seo排名赚app
  • 网站建设主机的功能厦门seo外包
  • 建设网站联盟黄冈网站推广厂家
  • 常州个人网站建设企业培训心得
  • 太仓市住房和城乡建设局官方网站微信推广
  • 快速网站开发工具投放广告的网站
  • 住房城乡建设厅官方网站seo点击排名工具有用吗
  • 网络代码公司seo是什么意思
  • 免费域名网站申请朋友圈推广文案
  • 网站建设与管理的未来规划日本预测比分
  • 接手一个新的网站应该怎样做交换链接案例
  • 商城网站制作输入关键词进行搜索
  • wordpress网站设计100个裂变营销案例
  • 做网站 图片格式百度热搜榜排名今日p2p
  • web前端菜鸟教程游戏行业seo整站优化
  • 做一个网站要多少钱网站seo内容优化
  • 深圳城乡和住房建设局网站首页沧州网络推广外包公司
  • 集团logo设计公司seo外链查询工具
  • 宁波网站建设哪家比较好爱站网关键词挖掘机
  • 做网站推广哪些搜狗推广
  • 北京网站设计制作费用站长数据
  • 做电脑网站用什么软件好用吗新东方烹饪学校学费一年多少钱