题目
给你两棵二叉树的根节点 p
和 q
,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
提示:
- 两棵树上的节点数目都在范围
[0, 100]
内 -104 <= Node.val <= 104
解法1:递归,深度优先搜索
两棵树如果相同,即两棵树的结构完全相同,同时节点具有相同的值。那么可以同时对两颗树采用前序遍历递归处理。
代码如下:
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if ((p == nullptr) && (q == nullptr)) {
return true;
}
if ((p != nullptr) && (q != nullptr)) {
if (p->val != q->val) {
return false;
}
return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right));
}
return false;
}
};