等价二叉树
问题描述:
1 1
/ \ / \
2 2 and 2 2
/ /
4 4
就是两棵等价的二叉树。
1 1
/ \ / \
2 3 and 2 3
/ \
4 4
就不是等价的。
解题思路:
利用递归算法,分别比较两棵树相同位置结点的值,若不相等则返回0,若除了叶子结点外的结点的左儿子和右儿子的值均相等则返回1.
代码实现:
class Solution {
public:
/**
* @aaram a, b, the root of binary trees.
* @return true if they are identical, or false.
*/
bool isIdentical(TreeNode* a, TreeNode* b) {
// Write your code here
bool left,right;
if(a==NULL&&b==NULL) return 1;
if(a==NULL&&b!=NULL) return 0;
if(a!=NULL&&b==NULL) return 0;
if(a->val!=b->val) return 0; //若改成 if(a->val==b->val) return 1 ; 则不对!
left= isIdentical(a->left,b->left);
right= isIdentical(a->right,b->right);
return left&&right;
}
};