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);
        }
    };
  • 相关阅读:
    弱省胡策 Magic
    CF917D Stranger Trees
    【弱省胡策】Round #5 Count
    【BZOJ2117】 [2010国家集训队]Crash的旅游计划
    「2017 山东一轮集训 Day5」苹果树
    【SDOI2017】天才黑客
    【JXOI2018】守卫
    小程序两种图片加载方式
    小程序之底部栏设计
    小程序之全局变量的设置及使用
  • 原文地址:https://www.cnblogs.com/Aliencxl/p/12335839.html
Copyright © 2011-2022 走看看