zoukankan      html  css  js  c++  java
  • leetcode 对称二叉树

    给定一个二叉树,检查它是否是镜像对称的。

    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1
    /
    2 2
    / /
    3 4 4 3
    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1
    /
    2 2

    3 3

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/symmetric-tree
    思路:利用中序遍历的同时去判断(非递归版

    非递归版

    class Solution {
    public:
        bool isSymmetric(TreeNode* root) {
            if(!root)return true;
            stack<TreeNode*> stk1;
            stack<TreeNode*> stk2;
            auto p=root;
            auto q=root;
            while(p||q||stk1.size()||stk2.size()){
                while(p&&q){
                    stk1.push(p);
                    stk2.push(q);
                    p=p->left;
                    q=q->right;
                }
                if(p||q){
                    return false;
                }
                p=stk1.top();
                q=stk2.top();
                stk1.pop();
                stk2.pop();
                if(p->val!=q->val)return false;
                p=p->right;
                q=q->left;
            }
            return true;
        }
    };
    

    递归版

    
    class Solution {
    public:
        bool isSymmetric(TreeNode* root) {
            if(!root)return true;
            return dfs(root->left,root->right);
        }
        bool dfs(TreeNode* l,TreeNode* r){
            if(!l||!r)return !l&&!r; 
            if(l->val!=r->val)return false;
            return dfs(l->left,r->right)&&dfs(l->right,r->left);
        }
    };
    
  • 相关阅读:
    集成学习方法
    nlp知识
    kaggle竞赛入门整理
    pandas知识点
    EM算法
    特征工程
    【clustering】之K-means && K-medoids
    sklearn学习笔记
    周总结十二
    《如何高效学习》读书笔记五
  • 原文地址:https://www.cnblogs.com/clear-love/p/11290917.html
Copyright © 2011-2022 走看看