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

做网站0基础写代码原神网页设计素材

做网站0基础写代码,原神网页设计素材,淘宝客网站做的好的,电子商务平台开发建设对称二叉树 题目题解1. 递归2. 递归 解释1. 对称2. 非对称 题目 101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 题解 1. 递归 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val0, leftNone,…

对称二叉树

    • 题目
    • 题解
      • 1. 递归
      • 2. 递归
    • 解释
      • 1. 对称
      • 2. 非对称

题目

101. 对称二叉树

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

在这里插入图片描述

题解

1. 递归

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def isSymmetric(self, root):""":type root: TreeNode:rtype: bool"""if not root:return Truereturn self.compare(root.left, root.right)def compare(self, left, right):#首先排除空节点的情况if left == None and right != None: return Falseelif left != None and right == None: return Falseelif left == None and right == None: return True#排除了空节点,再排除数值不相同的情况elif left.val != right.val: return False#此时就是:左右节点都不为空,且数值相同的情况#此时才做递归,做下一层的判断outside = self.compare(left.left, right.right) #左子树:左、 右子树:右inside = self.compare(left.right, right.left) #左子树:右、 右子树:左isSame = outside and inside #左子树:中、 右子树:中 (逻辑处理)return isSame

来自:代码随想录在这里插入图片描述

2. 递归

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def isSymmetric(self, root):""":type root: TreeNode:rtype: bool"""if not root:return Truedef dfs(left, right):# 递归的终止条件是两个节点都为空# 或者两个节点中有一个为空# 或者两个节点的值不相等if not (left or right):return Trueif not (left and right):return Falseif left.val!=right.val:return False# 外侧和内侧return dfs(left.left, right.right) and dfs(left.right, right.left)return dfs(root.left, root.right)

解释

1. 对称

假设有一个二叉树如下:

    1/ \2   2/ \ / \
3  4 4  3

步骤 1: 初始调用
isSymmetric 方法首先检查根节点 1 是否为空。根节点不为空,所以调用 dfs(root.left, root.right),即检查 root.left 和 root.right 是否对称。root.left 和 root.right 都是值为 2 的节点。

步骤 2: 递归判断
对于 left 节点和 right 节点(值为 2),检查它们的左右子树是否对称。

比较 left.left 和 right.right(即 3 和 3)。它们值相等,继续递归。

比较 left.right 和 right.left(即 4 和 4)。它们值相等,继续递归。

步骤 3: 递归继续
递归深入到 left.left 和 right.right(3 和 3),以及 left.right 和 right.left(4 和 4)。它们的值相等,因此返回 True。

步骤 4: 完成判断
由于所有的对称条件都满足,最终返回 True,表示该二叉树是对称的。

2. 非对称

考虑以下不对称的二叉树:

    1/ \2   2\   \3   3

步骤 1: 初始调用
isSymmetric 方法检查根节点 1,然后调用 dfs(root.left, root.right),即检查 root.left 和 root.right 是否对称。

root.left 和 root.right 都是值为 2 的节点。

步骤 2: 递归判断
对于 left 和 right(值为 2),继续检查它们的左右子树。

比较 left.left 和 right.right,但是 left.left 是空的,right.right 是值为 3 的节点,返回 False。

步骤 3: 完成判断
由于递归过程中发现不对称,最终返回 False,表示该二叉树不是对称的。

http://www.dtcms.com/a/619148.html

相关文章:

  • 摄影展板设计东莞网站建设seo推广
  • opencv代码分析
  • 素材网站的下载服务器怎么做wordpress数据库改域名
  • 网站运营招聘要求软件项目管理计划书
  • 江西南昌建设厅网站怎么做qq代刷网站
  • 主从DNS服务器
  • 邢台做网站哪家公司好上海缪斯设计公司官网
  • 做外贸做的很好的网站属于网络营销的特点是
  • 响应式网站有什么好处策划公司活动方案
  • 怎么做网站滑动图片部分wordpress 调试
  • 第42节:自定义渲染管线:修改Three.js默认流程
  • 网站开发后端最新技术设计公司注册需要什么条件
  • AdalFlow:让大模型任务像水流一样灵活可塑
  • 网奇e游通旅游网站建设系统如何修改上传到服务器小视频做网站怎么赚钱吗
  • 达州达县网站建设网站设计与平面设计区别
  • 西安市建设网站西安模板做网站
  • 移动开发工程笔记:glide/taro与性能优化
  • nuxt做多页面网站本地wordpress环境搭建
  • Flink原理与实战(java版)#第2章 Flink的入门(第七节Flink的第一个流式计算示例和第八节本章小结)
  • 普通的宣传网站用什么做百度应用商店官网
  • SpringBoot 整合时序数据库 Apache IoTDB 实战操作详解
  • Painter AI 散布:告别“重复感”的环境贴图
  • 长沙米拓建站wordpress apache 配置
  • 安卓手机做网站服务器吗建站系统源代码
  • 建设网站服务器郑州网站建设知名公司
  • 网站与系统对接图文方案网创电商是什么
  • 海豚调度器创建租户错误的原因
  • 2025 年江西省职业院校技能大赛人工智能应用技术赛项竞赛方案(中职组)
  • 字符指针与字符串
  • 前端 css中的函数