zoukankan      html  css  js  c++  java
  • 二叉树的递归问题

    37. 树的子结构

    输入两棵二叉树A,B,判断B是不是A的子结构。

    我们规定空树不是任何树的子结构。

    class Solution {
    public:
        map<TreeNode*,bool> mp
        bool issub(TreeNode* p1,TreeNode* p2){
            if(p2 == NULL) return true;
            if(p1 == NULL) return false;
            if(p1->val != p2->val) return issub(p1->left,p2) || issub(p1->right,p2);
            return issub(p1->left,p2->left) && issub(p1->right,p2->right) || issub(p1->left,p2) || issub(p1->right,p2);
        }
        bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
            if(pRoot2 == NULL) return false;
            return issub(pRoot1,pRoot2);
        }
    };

    38. 二叉树的镜像

    输入一个二叉树,将它变换为它的镜像。

    class Solution {
    public:
        void mirror(TreeNode* root) {
            TreeNode* t;
            if(!root) return;
            t = root->left;
            root->left = root->right;
            root->right = t;
            mirror(root->left);
            mirror(root->right);
            }
    };

    39. 对称的二叉树

    请实现一个函数,用来判断一棵二叉树是不是对称的。

    如果一棵二叉树和它的镜像一样,那么它是对称的。

    class Solution {
    public:
        bool issym(TreeNode* p1,TreeNode* p2){
            if(!p1 && !p2) return true;
            if(!p1 || !p2) return false;
            if(p1->val != p2->val) return false;
            return issym(p1->left,p2->right) && issym(p1->right,p2->left);
        }
        bool isSymmetric(TreeNode* root) {
            if(!root) return true;
            return issym(root->left,root->right);
        }
    };
  • 相关阅读:
    抽象与接口的综合练习
    java构造函数能否被继承,为什么?
    题解 【USACO 4.2.1】草地排水
    题解 【NOI2010】超级钢琴
    题解 [USACO Mar08] 奶牛跑步
    题解 【NOIP2016】魔法阵
    题解 对称二叉树
    题解 【NOIP2014】解方程
    题解 【NOIP2010】关押罪犯
    题解 贪吃蛇
  • 原文地址:https://www.cnblogs.com/Aliencxl/p/12335839.html
Copyright © 2011-2022 走看看