• [剑指Offer] 17.树的子结构


    题目描述

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

    【思路】要查找树A中是否存在和树B结构一样的子树,可以分成两步:

     1.第一步在树A中找到和B的根节点的值一样的结点R;即当前树A包含子树B,HasSubtree(...)

     2.第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。即当前树A是否是子树B,IsSubtree(...)

     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 IsSubtree(TreeNode* pRoot1, TreeNode* pRoot2){
    13         if(pRoot2 == NULL)
    14             return true;
    15         if(pRoot1 == NULL)
    16             return false;
    17         if(pRoot1->val == pRoot2->val){
    18             return IsSubtree(pRoot1->left, pRoot2->left) && IsSubtree(pRoot1->right, pRoot2->right);
    19         }else{
    20             return HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
    21         }
    22     }
    23    
    24     bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){
    25         if(pRoot1 == NULL || pRoot2 == NULL)
    26             return false;
    27         return IsSubtree(pRoot1,pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
    28     }
    29 };
  • 相关阅读:
    代码开发,测试及发布
    需求改进&系统设计
    综合系统开发----需求分析
    自我介绍+课后6问
    动态规划: 最大m子段和问题的详细解题思路(JAVA实现)
    mybatis typealias 问题
    对偶微分形式
    ASP.NET Web API 直到我膝盖中了一箭【1】基础篇
    第一篇博客,写点什么好呢?
    docker之MySQL主从复制
  • 原文地址:https://www.cnblogs.com/lca1826/p/6475897.html
Copyright © 2020-2023  润新知