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

    题目描述

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
     
    题解:
      注意,所谓的子结构,是树的形状和值相同,并非判断B是不是A的一部分【如果是这样,那就是直接比较地址了】
      使用递归;
      
     1 class Solution {
     2 public:
     3     bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
     4     {
     5         if (pRoot1 == nullptr || pRoot2 == nullptr)return false;
     6         bool res = false;
     7         if (pRoot1->val != pRoot2->val)
     8         {
     9             if (pRoot1->val == pRoot2->val)
    10                 res = DFS(pRoot1, pRoot2);
    11             if (!res)
    12                 res = HasSubtree(pRoot1->left, pRoot2);
    13             if (!res)
    14                 res = HasSubtree(pRoot1->right, pRoot2);
    15         }
    16         return res;
    17     }
    18     bool DFS(TreeNode* root1, TreeNode* root2)
    19     {
    20         if (root2 == nullptr)return true;
    21         if (root1 == nullptr)return false;
    22         if (root1->val != root2->val)return false;
    23         return DFS(root1->left, root2->left) && DFS(root1->right, root2->right);
    24     }
    25 };
     
     
  • 相关阅读:
    Interesting Finds: 2009 01.15 ~ 01.17
    Interesting Finds: 2008.12.07
    Interesting Finds: 2008.12.31
    10月16号
    10月14号
    10月15号
    10月13号
    10月20号
    10月19号
    10月12号
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11673778.html
Copyright © 2011-2022 走看看