zoukankan      html  css  js  c++  java
  • 【剑指offer】树的子结构

    题目链接:树的子结构

     

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

     

    题解:先在A中找到B的根结点,找的过程递归实现。再判断在A中以这个根结点为节点的子树是不是和B一样。

     

    代码:

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };*/
    10 class Solution {
    11 public:
    12     bool isChild(TreeNode* p1,TreeNode* p2){
    13         if(p2 == NULL )    return true;
    14         if(p1 == NULL )    return false;
    15         if(p1->val != p2->val )    return false;
    16         return isChild(p1->left,p2->left)&&isChild(p1->right,p2->right);
    17     }
    18     bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){
    19         bool flag = false;
    20         if(pRoot1 == NULL  || pRoot2 == NULL )    return false;
    21         if(pRoot1->val == pRoot2->val){    //A中找到这个根节点,判断结构
    22             flag = isChild(pRoot1,pRoot2);
    23         }
    24         if(!flag)    flag = HasSubtree(pRoot1->left,pRoot2);//继续左子树找
    25         if(!flag)    flag = HasSubtree(pRoot1->right,pRoot2);//继续右子树找
    26         return flag;
    27     }
    28 };
  • 相关阅读:
    - 错误笔记
    只是一个没有人知道的蒟蒻
    省选前模板复习
    数学知识小结#1
    写在NOIP2018后
    Atcoder&CodeForces杂题11.7
    Atcoder&CodeForces杂题11.6
    [NOIP11.1模拟赛]补番报告
    [JZOJ5281]钦点题解--瞎搞+链表
    [JZOJ5280]膜法师题解--思维+前缀和
  • 原文地址:https://www.cnblogs.com/Asumi/p/12403505.html
Copyright © 2011-2022 走看看