leetcode_深度遍历和广度遍历 100. 相同的树

news/2025/2/9 5:42:22 标签: leetcode, 算法, 职场和发展

100. 相同的树

  • 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

  • 如果两棵树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

  • 思路: (递归法)

    • 返回True的情况:
      • 两棵树都为空
      • 两棵树相同
    • 返回False的情况:
      • 两棵树不为空但节点分布不同或节点值不同不相同
      • 两棵树有一个为空
    • 注: 先判断是否为空, 再判断节点值是否相同
- # 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 isSameTree(self, p, q):
        """
        :type p: Optional[TreeNode]
        :type q: Optional[TreeNode]
        :rtype: bool
        """
        if not p and not q:
            # 如果p,q都为空,返回True
            return True
        elif not p or not q:
            # 如果p,q其中之一为空,返回False
            return False
        elif p.val != q.val:
            # 如果根节点值不同,返回False
            return False
        else:
            # 调用自身分别对p,q两树的左子树和右子树进行判别
            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)      
  • 时间复杂度: O(n)
  • 空间复杂度: O(h),h是树的高度

http://www.niftyadmin.cn/n/5845599.html

相关文章

知识图谱智能应用系统:数据存储架构与流程解析

在当今数字化时代,知识图谱作为一种强大的知识表示和管理工具,正逐渐成为企业、科研机构以及各类智能应用的核心技术。知识图谱通过将数据转化为结构化的知识网络,不仅能够高效地存储和管理海量信息,还能通过复杂的查询和推理,为用户提供深度的知识洞察。然而,构建一个高…

RK3568上使用C++结合V4L2拉流,并RKMPP硬件编解码,并保存为MP4文件

在RK3568平台上使用C结合V4L2捕获视频流,并通过RKMPP进行硬件编码后保存为MP4文件,可以按照以下步骤实现: 1. 环境准备 硬件:RK3568开发板、摄像头模块。软件依赖: Linux内核支持V4L2。Rockchip MPP库(RKM…

【RocketMQ 存储】- 同步刷盘和异步刷盘

文章目录 1. 前言2. 概述3. submitFlushRequest 提交刷盘请求4. FlushDiskWatcher 同步刷盘监视器5. 同步刷盘但是不需要等待刷盘结果6. 小结 本文章基于 RocketMQ 4.9.3 1. 前言 RocketMQ 存储部分系列文章: 【RocketMQ 存储】- RocketMQ存储类 MappedFile【Rock…

React 生命周期函数详解

React 组件在其生命周期中有多个阶段,每个阶段都有特定的生命周期函数(Lifecycle Methods)。这些函数允许你在组件的不同阶段执行特定的操作。以下是 React 组件生命周期的主要阶段及其对应的生命周期函数,并结合了 React 16.3 的…

【ROS2】【2025】Simulate a 6DoF Robotic Arm in Gazebo and ROS2

在本教程中,将学习如何从头开始模拟机械臂。我们将使用 Doosan Robotics 的 6DoF 机械臂。Gazebo 和 ROS2 是执行此模拟的软件。所有代码、URDF 和配置文件都可以在我的 gitee 存储库中找到和下载。 https://gitee.com/kong-yue1/robotic_arm_environment.githttps…

FreeRTOS的事件组

1 创建事件组 xEventGroupCreate EventGroupHandle_t xEventGroupCreate( void ) { EventGroup_t *pxEventBits;/* 分配事件组内存。*/pxEventBits ( EventGroup_t * ) pvPortMalloc( sizeof( EventGroup_t ) );if( pxEventBits ! NULL ){pxEventBits->uxEventBits 0; …

uniapp中使用uCharts折线图X轴数据间隔显示

1、先看官网 https://www.ucharts.cn/ 2、设置代码 "xAxisDemo3":function(val, index, opts){if(index % 2 0){return val}else {return }}, 再在数据中引入设置好样式

Django开发入门 – 1.搭建基于Python Web框架Django的IDE开发环境

Django开发入门 – 1.搭建基于Python Web框架Django的IDE开发环境 Build A Integrated Development Environment(IDE) for Python Web Framework - django By JacksonML 1. 获取及安装最新版Python 打开Chrome浏览器,访问Python官网链接:https://www…