剑指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);
}
上一篇下一篇

猜你喜欢

热点阅读