一、问题描述
此题是第100题,相同的树。
题目链接:
力扣https://leetcode.cn/problems/same-tree/
如图1-1,是该问题的描述,现在我们要判断两颗二叉树是否相同,包括结构和节点的值都要相同。
图1-1
示例1:
图1-2
如图1-2,就是两棵相同的二叉树,结构相同,节点的值都相同。
示例2:
图1-3
如图1-3,这两棵二叉树不是相同的。虽然有相同的节点1、2,但是结构不同。
二、技术路线
利用递归,深度优先搜索。
具体过程如下。
1.如果两棵二叉树都为空,则两棵二叉树一定相同。仅仅其中一个为空,那么这两棵二叉树一定不相同。
2.如果都不为空,比较二叉树根节点的值。
3.如果值不同,则两棵二叉树一定不同。
4.如果值相同,再分别判断两棵二叉树的左子树和右子树是否相同。
三、代码实现
核心代码如下。
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p == nullptr && q != nullptr) {
return false;
}
if(p != nullptr && q == nullptr) {
return false;
}
if(p == nullptr && q == nullptr) {
return true;
}
if(p->val != q-> val) {
return false;
}
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}