首页 > 其他 > 详细

二叉树的递归问题

时间:2020-02-20 16:01:45      阅读:60      评论:0      收藏:0      [点我收藏+]

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);
    }
};

 

二叉树的递归问题

原文:https://www.cnblogs.com/Aliencxl/p/12335839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!