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 };
  • 相关阅读:
    shell
    regionMatches方法
    ==
    使用INTO子句创建新表
    数据库除运算
    数据库笛卡尔积运算
    人生格言
    刚开通~
    Nginx:413 Request Entity Too Large
    ORACLE 查看并修改最大连接数
  • 原文地址:https://www.cnblogs.com/Asumi/p/12403505.html
Copyright © 2011-2022 走看看