美文网首页
Easy 101. Symmetric Tree

Easy 101. Symmetric Tree

作者: 烤肉拌饭多加饭 | 来源:发表于2020-05-03 16:57 被阅读0次

    判断树是否是对称的
    方法一:容易想到的递归方法

    class Solution {
    public:
        bool isSymmetric(TreeNode* root) {
            return isMirror(root,root);
        }
        bool isMirror(TreeNode* p, TreeNode* q){
            if(p==NULL && q==NULL) return true;
            if(p == NULL | q == NULL) return false;
            return (p->val == q->val) && isMirror(p->left,q->right) 
                                      && isMirror(p->right,q->left);
        }
    };
    

    方法二:循环
    层序遍历,使用队列

    bool isSymmetric(TreeNode* root) {
            if(root == NULL) return true;
            std::queue<TreeNode*> q;
            TreeNode* t1 = new TreeNode();
            TreeNode* t2 = new TreeNode();
            q.push(root->left);
            q.push(root->right);
            while(!q.empty()){
                t1 = q.front();
                q.pop();
                t2 = q.front();
                q.pop();
                if(t1 == NULL && t2 == NULL) continue;
                if(t1 == NULL | t2 == NULL) return false;
                if(t1->val != t2->val) return false;
                q.push(t1->left);
                q.push(t2->right);
                q.push(t1->right);
                q.push(t2->left);
            }
            return true;
        }
    

    相关文章

      网友评论

          本文标题:Easy 101. Symmetric Tree

          本文链接:https://www.haomeiwen.com/subject/yswfghtx.html