zoukankan      html  css  js  c++  java
  • LeetCode 572. 另一个树的子树

    给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。

    示例 1:
    给定的树 s:

         3
        / 
       4   5
      / 
     1   2
    

    给定的树 t:

       4 
      / 
     1   2
    

    返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。

    示例 2:
    给定的树 s:

         3
        / 
       4   5
      / 
     1   2
        /
       0
    

    给定的树 t:

       4
      / 
     1   2
    

    返回 false。

    思路:一棵数包含另一棵树,有三种情况:

    1.两棵树相等。

    2.一棵树在另一棵树的左侧。

    3.一棵树在另一棵树的右侧。

    所以我们可以利用两次递归,来判断t是否是s的子树。

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     struct TreeNode *left;
     6  *     struct TreeNode *right;
     7  * };
     8  */
     9 
    10 bool help(struct TreeNode* s, struct TreeNode* t)
    11 {
    12     if(s==NULL&&t==NULL){
    13         return true;
    14     }
    15     if(s==NULL||t==NULL){
    16         return false;
    17     }
    18     if(s->val!=t->val){
    19         return false;
    20     }
    21     return help(s->left,t->left)&&help(s->right,t->right);
    22 }
    23 
    24 bool isSubtree(struct TreeNode* s, struct TreeNode* t){
    25     if(s==NULL){
    26         return false;
    27     }
    28     return  help(s,t)||isSubtree(s->left,t)||isSubtree(s->right,t);
    29 }
  • 相关阅读:
    k8s资源需求和限制, 以及pod驱逐策略
    python转义引起的错误
    nginx location 匹配目录
    kubelet 证书自动续期
    docker常见退出码
    (转)firefox火狐浏览器语言设置
    去掉表的identity属性
    SQL Server内存方面知识收集
    SQL Server 中not in和not exists
    Data Compression(1)
  • 原文地址:https://www.cnblogs.com/woju/p/12845781.html
Copyright © 2011-2022 走看看