/**
* 给你两棵二叉树的根节点 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
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode-cn.com/problems/same-tree
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
#include <iostream>
#include <stack>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
// both null
if (p == nullptr && q == nullptr) {
return true;
}
// one is null, one is not; or the value is not the same
if (p == nullptr || q == nullptr || p->val != q->val) {
return false;
}
// check left sub node
if (!isSameTree(p->left, q->left)) {
return false;
}
// check right sub node
if (!isSameTree(p->right, q->right)) {
return false;
}
return true;
}
};
LeetCode100. 相同的树
最新推荐文章于 2024-11-16 14:46:58 发布