剑指offer 28 树是否镜像
2020-05-01 本文已影响0人
再凌
我的思路是将左子树先swap, 再检查和右子树是否一样, 显然这样修改了原来的数据结构.
更好的思路是, 检查l->right和r->left && l->left和r->right
还是要细心找规律啊.....
贴上修改后的代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool check(struct TreeNode *l, struct TreeNode *r)
{
if(!l && !r) return true;
if(!l && r) return false;
if(!r && l) return false;
if(l->val != r->val) return false;
return (check(l->left,r->right) && check(l->right,r->left));
}
bool isSymmetric(struct TreeNode* root){
if(!root) return true;
return check(root->left, root->right);
}