判断两二叉树是否相等
题目描述:给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。
示例:
input:{1,2},{1,#,2}
output:false
思路:
递归:1)判断根节点的值是否相等,2)判断左右子树是否相等
数据结构:
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
代码
bool isSameTree(TreeNode* p, TreeNode* q) {
/*判断根节点是否为空*/
if (p == nullptr || q == nullptr)
return p == q;
if (p->val != q->val)
return false;
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}