zoukankan      html  css  js  c++  java
  • 树的子结构

    题目

    输入两颗二叉树A,B,判断B是不是A的子结构。

    思路

    1. 首先在A树中进行遍历,找到值与B树相同的根节点
    2. 以A树中找到的根节点进行遍历,判断是否与B树有相同的结构
      /*
      struct TreeNode {
          int val;
          struct TreeNode *left;
          struct TreeNode *right;
          TreeNode(int x) :
                  val(x), left(NULL), right(NULL) {
          }
      };*/
      class Solution {
      public:
          bool HasSubtree(TreeNode* root1, TreeNode* root2)
          {
              if(root1==nullptr||root2==nullptr)
                  return false;
              
              bool res=false;
              if(root1->val==root2->val)
                  res=hasSubTreeCore(root1,root2);
              if(!res)
                  res=HasSubtree(root1->left,root2);
              if(!res)
                  res=HasSubtree(root1->right,root2);
              
              return res;
          }
      private:
          bool hasSubTreeCore(TreeNode *r1,TreeNode *r2)
          {
              if(r2==nullptr)
                  return true;
              if(r1==nullptr)
                  return false;
              if(r1->val!=r2->val)
                  return false;
              
              return hasSubTreeCore(r1->left,r2->left)&&hasSubTreeCore(r1->right,r2->right);
          }
      };
  • 相关阅读:
    thinkphp 视图定义
    ThinkPHP支持模型的分层
    thinkphp 虚拟模型
    thinkphp 参数绑定
    thinkphp 自动完成
    thinkphp 自动验证
    thinkphp 子查询
    thinkphp 动态查询
    ThinkPHP sql查询
    thinkphp 统计查询
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10180232.html
Copyright © 2011-2022 走看看