【LeetCode】100. 相同的树

简介: 【LeetCode】100. 相同的树

题目描述


难度:【简单】


标签:【二叉树】


给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。


题目地址:https://leetcode-cn.com/problems/same-tree/


示例


示例 1


1268169-20211127220033058-776346952.png


输入:p = [1,2,3], q = [1,2,3]
输出:true


示例 2


1268169-20211127220059425-814432203.png


输入:p = [1,2], q = [1,null,2]
输出:false


示例 3:


1268169-20211127220128645-335669403.png


输入:p = [1,2,1], q = [1,1,2]
输出:false


题目大意


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


解题


这题可以看做是一个二叉树的前序遍历,明确一个节点要做的事情,然后剩下的事抛给框架。


那么传进来的 2 个节点需要干啥事情?


  • 判断这 2个节点的值是否相等,是的话就继续往下比较2个节点的对应的左右孩子节点(交给递归)。


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        // 2个节点都是null,认为相同,返回true
        if (p == null && q == null) {
            return true;
        }
        // 2个节点任一个为null,返回 false
        if (p == null || q == null) {
            return false;
        }
        // 2个节点都不为空,但是值不等,返回 false
        if (p.val != q.val) {
            return false;
        }
        // 2个节点都不为空,值也相等,就继续递归左子树,右子树,
        // 两边结束后都为 true,则最终为true
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}
相关文章
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
48 4
|
3月前
|
Python
【Leetcode刷题Python】538. 把二叉搜索树转换为累加树
LeetCode上538号问题"把二叉搜索树转换为累加树"的Python实现,使用反向中序遍历并记录节点值之和来更新每个节点的新值。
21 3
|
6月前
|
算法 C语言 容器
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145(下)
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145
64 7
|
6月前
|
C语言
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145(中)
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145
54 1
|
6月前
|
算法 C语言 C++
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145(上)
从C语言到C++_25(树的十道OJ题)力扣:606+102+107+236+426+105+106+144+94+145
40 1
|
6月前
LeetCode———100——相同的树
LeetCode———100——相同的树
|
6月前
力扣337.打家劫舍3(树形dp)
力扣337.打家劫舍3(树形dp)
|
5月前
|
SQL 算法 数据可视化
LeetCode题目99:图解中叙遍历、Morris遍历实现恢复二叉树搜索树【python】
LeetCode题目99:图解中叙遍历、Morris遍历实现恢复二叉树搜索树【python】
|
5月前
|
存储 SQL 算法
LeetCode题目100:递归、迭代、dfs使用栈多种算法图解相同的树
LeetCode题目100:递归、迭代、dfs使用栈多种算法图解相同的树
|
5月前
|
存储 算法 数据可视化
python多种算法对比图解实现 验证二叉树搜索树【力扣98】
python多种算法对比图解实现 验证二叉树搜索树【力扣98】