Description:
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
Note:
无
Solution:
Analysis and Thinking:
题目要求在给定两棵树的情况下,判断这两棵树是否相等,可以使用递归的方式实现
Steps:
1. 判断当前两节点是否有任一为空,如果有,表示不相等,返回false
2. 如果当前两节点都为空,表示两棵树都已经遍历完毕,所有节点都相等,返回true
3. 如果两节点都非空,比较节点的值,如果不等,返回false
4. 递归对两节点的左子树以及右子树调用1~3步
Codes:
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if(p && !q)
return false;
else if(!p && q)
return false;
else if(!p && !q)
return true;
else
{
if(p->val != q->val)
return false;
else
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
}
};
Results: