zoukankan      html  css  js  c++  java
  • 剑指offer17-树的子结构

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

    思路:先序遍历A判定节点是否跟B的头结点相等;如果发现相等节点,就再次递归遍历相应A的子树是否包含B树;

            bool equal(TreeNode* p1,TreeNode* p2)
        {
            //p1可能比p2复杂;
         //   if(p2==NULL) return true;
            //bool res=true;
            if(p1==NULL||(p1->val!=p2->val)) return false;
            //if(p1!=NULL&&p2==NULL) return false;
            bool resl=true,resr=true;
            //不处理但有返回值
            if(p2->left!=NULL)
            {
                resl=equal(p1->left,p2->left);
            }
            if(p2->right!=NULL)
            {
                resr=equal(p1->right,p2->right);
            }
           // if(p2!=NULL&&p1!=NULL)
            return resl&&resr;
            
        }
        bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
            //
            if(pRoot1==NULL||pRoot2==NULL) return false;
            bool res=false;
            if(pRoot1->val==pRoot2->val)
                res=equal(pRoot1,pRoot2);
            if(!res)
            {
                res=HasSubtree(pRoot1->left,pRoot2);
                if(!res)
                    res=HasSubtree(pRoot1->right,pRoot2);
            }
            return res;
        }

  • 相关阅读:
    CPU Cache与缓存行
    linux 查看命令总结
    idea自个常用工具的总结
    《人月神话》
    啊哈,翻转
    Scrapy爬虫之豆瓣TOP250
    87的100次幂除以7的余数是多少
    python之sqlite3 用法详解
    Sublime Text 3 插件SublimeLinter/PEP8安装&配置,检查代码规范
    urlparse之urljoin() 爬虫必备
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12965654.html
Copyright © 2011-2022 走看看