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

  • 相关阅读:
    MFC深入浅出读书笔记第一部分
    给对话框添加背景
    相对路径与绝对路径之比较
    线程同步的四种方式以及串口通信
    DirectShow简单入门程序
    两个对话框之间的通信
    websphere部署war包
    Struts2的基础知识
    iBatis基础知识
    Struts1的基础知识
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12965654.html
Copyright © 2011-2022 走看看