题目
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.
思路
此题比较简单,利用前序遍历的思路对两个树的每个节点进行判断,如果不相等,则返回false。否则递归到两个树的左节点和右节点,只有两个树的所有节点相等时,才是返回true
实现代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
//有效性检查
if(p==NULL&&q==NULL){//如果两个树均为空,则返回true
return true;
}
if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)){
return false;
}
//先看根节点
if(p->val!=q->val){
return false;
}
bool isSameInLeft=isSameTree( p->left, q->left);
bool isSameInRigth=isSameTree( p->right, q->right);
return isSameInLeft*isSameInRigth;
}