【LeetCode面试经典150题】100. 相同的树

一、题目

  • 100. 相同的树 - 力扣(LeetCode)

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

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

二、思路

  1. 二叉树的题,不是递归就是迭代,迭代要引入辅助存储方案,一般用递归就行;
  2. 首先的思路肯定是两棵树一起递归,而且是以相同方式递归,使其每次都能递归到相同位置的结点,此时判断当前两树该位置的值是否相等;
  3. 还是一样看最终状态,递归到最后是两个空结点(叶子节点的子结点),而两个空结点也可视为相等;
  4. 如果不相等就返回 false ,相等就返回 true ,分别对比两棵树的左右子树,当左右子树都判断完成且均返回 true 时方可认为相同,需要注意的是当A数有值B树为null时,即B树在这个位置无结点,显然两树不一样,详见解法一

三、解法

解法一

java 复制代码
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        } else if (p == null || q == null) {
            return false;
        } else if (p.val != q.val) {
            return false;
        }
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}
相关推荐
Navigator_Z5 小时前
LeetCode //C - 1089. Duplicate Zeros
c语言·算法·leetcode
JAVA9655 小时前
JAVA面试-并发篇 03-使用synchronized doublecheck实现单例有什么坑
java·单例模式·面试
小江的记录本6 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
云泽8088 小时前
C++ 可调用对象通关指南:深度解析 Lambda 表达式、function 包装器与 bind 绑定器
开发语言·c++·算法
wlsh158 小时前
Go 迭代器
算法
语戚8 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
天天进步20158 小时前
Python全栈项目实战:从零构建校园心理健康咨询平台
面试·职场和发展
CS创新实验室9 小时前
从顺序表到动态数组:数据结构的永恒基石与现代语言的优雅封装
数据结构·算法
Black蜡笔小新10 小时前
自动化AI算法训练服务器DLTM训推一体化平台助力农业生产管理实现安全智能化
人工智能·算法·自动化
JAVA社区10 小时前
Java高级全套教程(十一)—— Kubernetes 超详细企业级实战详解
java·运维·微服务·容器·面试·kubernetes