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);
        }
    };
    
  • 相关阅读:
    树的遍历
    动态规划之背包问题
    Dijkstra算法
    最短路径
    关于数学公式Markdown
    子集数
    O、Θ、Ω
    AT212 P-CASカードと高橋君
    vector的使用方法
    P3512 [POI2010]PIL-Pilots 单调队列的应用
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12686584.html
Copyright © 2011-2022 走看看