力扣100判断树是否相等

简介: 力扣100判断树是否相等

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

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

示例 1:

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

输出:true

示例 2:


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

输出:false

示例 3:


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

输出:false


提示:


两棵树上的节点数目都在范围 [0, 100] 内

-104 <= Node.val <= 104

通过次数323,809提交次数542,092


来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/same-tree

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


//递归法
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p==nullptr&&q==nullptr)return true;
        if(!p||!q||(p->val!=q->val))return false;
        bool a=isSameTree(p->left,q->left);
        bool b=isSameTree(p->right,q->right);
        bool c=a&&b;
        return c;
    }
};
//使用queue
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        // if(p==nullptr&&q==nullptr)return true;
        // if(!p||!q)return false;
        queue<TreeNode*>qu;
        qu.push(p);
        qu.push(q);
        while(!qu.empty())
        {
            TreeNode* node1 = qu.front();
            qu.pop();
            TreeNode* node2 = qu.front();
            qu.pop();
            if(!node1&&!node2)continue;
            if(!node1||!node2||(node1->val!=node2->val))return false;
            qu.push(node1->left);
            qu.push(node2->left);
            qu.push(node1->right);
            qu.push(node2->right);
        }
        return true;
    }
};
//使用stack
```class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        // if(p==nullptr&&q==nullptr)return true;
        // if(!p||!q)return false;
        stack<TreeNode*>qu;
        qu.push(p);
        qu.push(q);
        while(!qu.empty())
        {
            TreeNode* node1 = qu.top();
            qu.pop();
            TreeNode* node2 = qu.top();
            qu.pop();
            if(!node1&&!node2)continue;
            if(!node1||!node2||(node1->val!=node2->val))return false;
            qu.push(node1->left);
            qu.push(node2->left);
            qu.push(node1->right);
            qu.push(node2->right);
        }
        return true;
    }
};
目录
相关文章
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
44 4
|
3月前
|
Python
【Leetcode刷题Python】538. 把二叉搜索树转换为累加树
LeetCode上538号问题"把二叉搜索树转换为累加树"的Python实现,使用反向中序遍历并记录节点值之和来更新每个节点的新值。
20 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
61 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
52 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
37 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】