Every day a leetcode
题目来源:剑指 Offer 28. 对称的二叉树
解法:递归
对称二叉树的定义:
对于树中任意一对对称结点l和r,一定有:
- l->val=r->val
- l->left->val=r->right->val
- l->right->val=r->left->val
据此,从root向下递归,依次判断即可。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool recur(struct TreeNode* l,struct TreeNode* r)
{
if(l == NULL && r == NULL) return true;
if(l == NULL && r!=NULL) return false;
if(l!=NULL && r == NULL) return false;
if(l->val!=r->val) return false;
return recur(l->left,r->right) && recur(l->right,r->left);
}
bool isSymmetric(struct TreeNode* root){
if(root == NULL) return true;
return recur(root->left,root->right);
}
结果:
(是考研原题)