zoukankan      html  css  js  c++  java
  • AcWing 37. 树的子结构

    题目描述  地址https://www.acwing.com/problem/content/35/
    输入两棵二叉树A,B,判断B是不是A的子结构。

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

    样例

    树A:
    
         8
        / 
       8   7
      / 
     9   2
        / 
       4   7
    树B:
    
       8
      / 
     9   2
    返回 true ,因为B是A的子结构。

    算法1
    一看到题目就想到 首先遍历A树(hasSubtree())
    以每个点作为根节点和B树的节点比较 看看是否相同(issame())
    如果和B树每个节点的值都相同(issame() 递归到B树节点为NULL) 那么就是有B结构的子树

    C++ 代码

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        bool IsSame(TreeNode* pRoot1, TreeNode* pRoot2)
        {
            if( pRoot2 == NULL) return true;
            if( pRoot1 == NULL ) return false;
    
            if(pRoot1->val != pRoot2->val) return false;
    
    
            return IsSame(pRoot1->left ,pRoot2->left) && IsSame(pRoot1->right,pRoot2->right);
        }
    
        bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
            if ( NULL == pRoot1 || NULL == pRoot2) return false;
    
            if( IsSame(pRoot1,pRoot2) ) return true;
    
            if( hasSubtree(pRoot1->right,pRoot2) )  return true;
            if( hasSubtree(pRoot1->left,pRoot2) ) return true;
    
    
            return false;
        }
    };
    
    作者:defddr
    链接:https://www.acwing.com/solution/acwing/content/3540/
    来源:AcWing
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    基于WINCE6.0+S3C2443的camera驱动
    WINCE下基于SL031的RFID功能的实现
    WINCE6.0+S3C2443下的activesync问题
    WINCE6.0+S3C2443下WatchDog学习
    错误的抉择,痛悔
    WINCE5.0下SQL server compact版本更新
    做生意和打工的区别
    WINCE基于MC8630的3G模块的控制和加载
    Xml Tips
    VB.NET and C# Comparison
  • 原文地址:https://www.cnblogs.com/itdef/p/11315648.html
Copyright © 2011-2022 走看看