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

重新求职刷题力扣DAY15

1.[226. 翻转二叉树](https://leetcode.cn/problems/symmetric-tree/)

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1:

在这里插入图片描述

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:

在这里插入图片描述

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

解题思路:递归和层序遍历都可以

# 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
from collections import deque
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        # 方法一:这里递归的方法应该是最容易写的
        # if not root: return
        # root.left, root.right = self.invertTree(root.right), self.invertTree(root.left)
        # return root

        # 方法二:层序遍历应该也是可以的,常见思路
        if not root:return 
        queue = deque()
        queue.append(root)
        while queue:
            for i in range(len(queue)):
                node = queue.popleft()
                node.left, node.right = node.right, node.left
                if node.left: queue.append(node.left)
                if node.right: queue.append(node.right)

        return root


2.101. 对称二叉树

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

示例 1:

在这里插入图片描述

输入:root = [1,2,2,3,4,4,3]
输出:true
# 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 isSymmetric(self, root: Optional[TreeNode]) -> bool:
        
        def istreessymetric(node1, node2):
            if not node1 and node2:
                return False
            
            if not node2 and node1:
                return False
            
            if not node1 and not node2:
                return True

            return node1.val == node2.val and istreessymetric(node1.left, node2.right) and \
                istreessymetric(node1.right, node2.left)
        
        if not root:
            return True

        return istreessymetric(root.left, root.right)

Better Implementation

# 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 isSymmetric(self, root: Optional[TreeNode]) -> bool:
        
        def is_mirror(n1, n2):
            # 如果两个节点都为空,则对称
            if not n1 and not n2:
                return True
            # 一个为空另一个非空,或值不相等则不对称
            if not n1 or not n2 or n1.val != n2.val:
                return False
            # 递归检查子树:左对右,右对左
            return is_mirror(n1.left, n2.right) and is_mirror(n1.right, n2.left)
        
        # 处理空树情况,并检查左右子树是否互为镜像
        return is_mirror(root.left, root.right) if root else True

相关文章:

  • 【机器学习第一期】决策树原理及实现步骤:含MATLAB/Python实现代码
  • 大模型常识:什么是大模型/大语言模型/LLM
  • 安卓携手电脑,畅享局域网手机投屏全屏新体验
  • CentOS7 离线安装 Postgresql 指南
  • Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网
  • 阿波罗STM32F767 FreeRTOS扩展例程
  • 扩增子分析|基于R包ggClusterNet包进行生态网络分析—十种可视化布局包括igraph,Gephi和maptree
  • 最新VS code配置C/C++环境(tasks.json, launch.json,c_cpp_properties.json)及运行多个文件、配置Cmake
  • STM32的HAL库开发---单通道ADC采集实验
  • 业务架构、数据架构、应用架构和技术架构
  • DeepSeek与人工智能的结合:探索搜索技术的未来
  • LeetCode-680. 验证回文串 II
  • Web开发技术概述
  • gsoap实现webservice服务
  • 数据结构:算法的时间复杂度和空间复杂度
  • docker 安装 nacos 与配置持久化详解
  • 【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程
  • Unity3D UI菜单与场景切换详解
  • 跨平台AES/DES加密解密算法【超全】
  • PostgreSQL认证指南
  • 【社论】进一步拧紧过紧日子的制度螺栓
  • 520、521婚登预约迎高峰?上海民政:将增派力量,新人可现场办理
  • 调查:“网约摩的”上线起步价五六元,合规性及安全性引质疑
  • 以开放促发展,以发展促开放,浙江加快建设高能级开放强省
  • 上海青少年书法学习园开园:少年以巨笔书写《祖国万岁》
  • 以色列总理:以哈谈判内容包括“结束战争的框架”