zoukankan      html  css  js  c++  java
  • 【剑指offer】对称的二叉树

    题目描述

    请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

    分析:从上到下直接遍历,利用栈或者队列暂存结点,注意结点的存和取都是成对的

    class Solution
    {
    public:
        bool isSymmetrical(TreeNode* root)
        {
            if(root==NULL)
                return true;
            stack<TreeNode*> s;
            s.push(root->left);
            s.push(root->right);
    
            while(s.size()!=0)
            {
                TreeNode *left=s.top();
                s.pop();
                TreeNode *right=s.top();
                s.pop();
    
                if(left==NULL&&right==NULL)
                    continue;
                if(left==NULL&&right!=NULL)
                    return false;
                if(left!=NULL&&right==NULL)
                    return false;
                if(left->val!=right->val)//值不相等肯定不是镜像
                    return false;
                    
                //左子树的左孩子和右子树的有孩子是一对
                s.push(left->left);
                s.push(right->right);
                
                //左子树的右孩子和右子树的左孩子是一对
                s.push(left->right);
                s.push(right->left);
            }
            return true;
        }
    };
  • 相关阅读:
    二叉树
    bfs
    E-Gold Coins
    D-We Love MOE Girls
    A
    哈希--查找出现过的数字
    二分查找
    KMP简单应用
    KMP算法(2)
    [JSOI2008]最大数
  • 原文地址:https://www.cnblogs.com/yinbiao/p/11595778.html
Copyright © 2011-2022 走看看