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);
        }
    };
  • 相关阅读:
    了解 DICOM 基本协议与其相关
    C# PropertyInfo 反射实体部分字段
    ref(引用参数) 和 out(输出参数) 区别
    Linq Where Expression<Func<T,bool>> 查询条件
    随笔规范
    C# 集合分析
    C# 几种常用的数据类型
    关于 C# 方法参数的理解
    打算开始写博客了
    有趣的算法、逻辑面试题
  • 原文地址:https://www.cnblogs.com/Aliencxl/p/12335839.html
Copyright © 2011-2022 走看看