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

深圳实力网站建设wordpress扫码付费

深圳实力网站建设,wordpress扫码付费,wordpress手机号,互联网广告业务作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。
会一些的技术:数据分析、算法、SQL、大数据相关、python
欢迎加入社区:码上找工作
作者专栏每日更新:
LeetCode解锁1000题: 打怪升级之旅
python数据分析可视化:企业实战案例
python源码解读
程序员必备的数学知识与应用
备注说明:方便大家阅读,统一使用python,带必要注释,公众号 数据分析螺丝钉 一起打怪升级

题目描述

给定一个二叉树,检查它是否是镜像对称的。

输入格式
  • root:二叉树的根节点。
输出格式
  • 返回布尔值,表示树是否对称。

示例

示例 1

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

示例 2

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


方法一:递归判断

解题步骤
  1. 基本情况:如果两个节点都是 None,返回 True;一个是 None 另一个不是,返回 False
  2. 比较节点:比较当前两节点的值,如果不相等,返回 False
  3. 递归比较:递归比较左子树的左孩子和右子树的右孩子,以及左子树的右孩子和右子树的左孩子。
Python 示例
class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef isSymmetric(root):"""判断二叉树是否对称:param root: TreeNode, 二叉树的根节点:return: bool, 是否对称"""def isMirror(left, right):if not left and not right:return Trueif not left or not right:return Falsereturn left.val == right.val and isMirror(left.left, right.right) and isMirror(left.right, right.left)return isMirror(root, root)# 示例调用
root = TreeNode(1, TreeNode(2, TreeNode(3), TreeNode(4)), TreeNode(2, TreeNode(4), TreeNode(3)))
print(isSymmetric(root))  # 输出: True
算法分析
  • 时间复杂度:(O(n)),其中 (n) 是树中节点的数量,因为需要访问树中的每一个节点。
  • 空间复杂度:(O(h)),其中 (h) 是树的高度,空间消耗来自递归的栈空间。

方法二:迭代使用队列

解题步骤
  1. 初始化队列:将根节点的两份加入队列。
  2. 迭代比较:每次从队列中取出两个节点并比较它们。
  3. 子节点入队:如果节点相同,则将它们的子节点按对称顺序加入队列。
Python 示例
from collections import dequedef isSymmetric(root):"""使用队列迭代判断二叉树是否对称:param root: TreeNode, 二叉树的根节点:return: bool, 是否对称"""queue = deque([root, root])while queue:t1, t2 = queue.popleft(), queue.popleft()if not t1 and not t2:continueif not t1 or not t2 or t1.val != t2.val:return Falsequeue.append(t1.left)queue.append(t2.right)queue.append(t1.right)queue.append(t2.left)return True# 示例调用
root = TreeNode(1, TreeNode(2, None, TreeNode(3)), TreeNode(2, None, TreeNode(3)))
print(isSymmetric(root))  # 输出: False
算法分析
  • 时间复杂度:(O(n)),因为需要访问每个节点。
  • 空间复杂度:(O(n)),在最坏的情况下,队列中需要存储所有节点。

方法三:使用栈进行迭代

解题步骤
  1. 使用栈:将根节点的两份压入栈中。
  2. 迭代比较:从栈中弹出两个节点并进行比较。
  3. 子节点压栈:如果节点相同,则将它们的子节点按对称顺序压入栈中。
Python 示例
def isSymmetric(root):"""使用栈迭代判断二叉树是否对称:param root: TreeNode, 二叉树的根节点:return: bool, 是否对称"""if not root:return Truestack = [(root.left, root.right)]while stack:left, right = stack.pop()if not left and not right:continueif not left or not right or left.val != right.val:return Falsestack.append((left.left, right.right))stack.append((left.right, right.left))return True# 示例调用
root = TreeNode(1, TreeNode(2, None, TreeNode(3)), TreeNode(2, None, TreeNode(3)))
print(isSymmetric(root))  # 输出: False
算法分析
  • 时间复杂度:(O(n)),需要访问每个节点。
  • 空间复杂度:(O(n)),在最坏的情况下,栈中需要存储所有节点。

不同算法的优劣势对比

特征方法一:递归方法二:迭代队列方法三:迭代栈
时间复杂度(O(n))(O(n))(O(n))
空间复杂度(O(h))(O(n))(O(n))
优势易于实现不使用递归不使用递归
劣势可能栈溢出空间开销大空间开销大

应用示例

这些方法可以用于计算机视觉中对象的对称性检测,软件测试中的树结构数据验证,或者在机器学习数据预处理中检查数据的对称性。

http://www.yayakq.cn/news/963001/

相关文章:

  • 企业网站推广方案在哪里软件工作室网站模板
  • 全国做网站最好的公司有哪些梦想小镇旅游官方网站建设
  • 唯品会一家做特卖的网站清远新闻最新
  • 苏州建设网站教程徐州列表网
  • 边坝网站制作现在注册公司需要什么条件
  • 什么类型的公司需要做建设网站的杭州10大软件开发公司
  • 淘宝联盟自建网站教程wordpress 首页重定向
  • 西安微信商城网站设计国外家居设计网站
  • 做网站要做相应的app吗新媒体运营需要哪些技能
  • 南昌网站建设方案外包北京做网站哪家公司好
  • 淘宝客做网站推广浅谈高校门户网站建设的规范标准
  • 企业建站用什么软件西宁电商网站制作公司
  • 常熟网站建设icp备案太仓企业网站建设
  • 用vue做网站圣辉友联北京网站建设公司
  • 建设网站要备案吗微信小程序开发实战课后答案
  • 直播网站是怎么做的福步外贸论坛怎么注册账号
  • 网站 平均加载时间无锡微信手机网站制作
  • 哪些网站可以做花店推广黑龙江网站建设seo优化
  • 网站收索功能怎么做怎样浏览被国内封禁的网站
  • 云主机 多个网站网站建设拓客有什么方法
  • 高级网站开发工信部北京顺义去哪找做网站的
  • 便宜的自助建站中国住房和城乡建设厅网站
  • 网站标题在哪里设置敬请期待英文翻译
  • php做网站难吗一家专门做特卖的网站是什么
  • 抚顺做网站c 可以做哪些网站
  • 点击网络网站移动网站开发服务
  • 网站设计与程序方向专业哈尔滨建设网站制作
  • 中国移动网站建设情况分析wordpress to phonegap
  • 互联网营销网站建设微信网站方案
  • 做网站技术人员南宁企业网站设计公司