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 };
     
     
  • 相关阅读:
    ms08-067
    siem主流厂商
    技术设计
    SOC
    通过 IDE 向 Storm 集群远程提交 topology
    Storm
    java线程中Exchanger使用
    android笔记
    学习笔记 Java类的封装、继承和多态 2014.7.10
    POJ 2533 Longest Ordered Subsequence DP
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11673778.html
Copyright © 2011-2022 走看看