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

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

    题目描述

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

    思路:

    判断二叉树是否对称。首先判断该二叉树是否为空,若不为空,根节点及其左右子树,判断左子树的左子树和右子树的右子树是否相同,这里采用递归的方式。
    若采用非递归,可采用栈或队列存取各级子树根节点

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    class Solution {
    public:
        bool isSymmetrical(TreeNode* pRoot)
        {
            if(pRoot == NULL)
                return true;
            return comRoot(pRoot->left,pRoot->right);
        }
        bool comRoot(TreeNode *left,TreeNode *right)
        {
            if(left == NULL)
                return right == NULL;
            if(right == NULL)
                return false;
            if(left->val != right->val)
                return false;
            return comRoot(left->right,right->left) && comRoot(left->left,right->right);
        }
    };
    
  • 相关阅读:
    c_水程序
    Arlenmbx!!!!
    java
    c语言随机函数&&时间函数
    2016省赛总结
    666
    【UOJ#389】【UNR#3】白鸽(欧拉回路,费用流)
    【洛谷P3756】[CQOI2017]老C的方块(最小割)
    CF704D Captain America(上下界网络流)
    AtCoder Regular Contest 097
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12686584.html
Copyright © 2011-2022 走看看