• 剑指 Offer 26. 树的子结构 树的遍历


    地址 https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/

    输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
    
    B是A的子结构, 即 A中有出现和B相同的结构和节点值。
    
    例如:
    给定的树 A:
    
         3
        / 
       4   5
      / 
     1   2
    给定的树 B:
    
       4 
      /
     1
    返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。
    
    示例 1:
    
    输入:A = [1,2,3], B = [3,1]
    输出:false
    示例 2:
    
    输入:A = [3,4,5,1,2], B = [4,1]
    输出:true
    限制:
    
    0 <= 节点个数 <= 10000
    
     

    在熟练掌握树的遍历上 进行比对即可

    注意树中可能有相同值的节点 所以一个A的子树不等同B树,还要继续查找

    class Solution {
    public:
    
        bool compareTree(TreeNode* A, TreeNode* B)
        {
            if ((A == NULL && B != NULL)) {
                return false;
            }
            if (( B == NULL)) return true;
            
            if (A->val != B->val) return false;
    
            return compareTree(A->left, B->left) && compareTree(A->right, B->right);
        }
    
        bool dfs(TreeNode* A, TreeNode* B) {
            if (A == NULL) return false;
    
            if (A->val == B->val &&  compareTree(A, B)) {
                return true;
            }
    
            return dfs(A->left, B) || dfs(A->right, B);
        }
    
        bool isSubStructure(TreeNode* A, TreeNode* B) {
            if (A == NULL || B == NULL)  return false;
    
            return dfs(A, B);
        }
    };
  • 相关阅读:
    3.4 抓取猫眼电影排行
    2.5 代理的基本原理
    第二章 爬虫基础
    1.8 爬虫框架的安装
    Python序列化
    CVE-2020-1938 Apache-Tomcat-Ajp漏洞复现
    Python定制类
    Apache Tomcat DDOS
    内网端口转发工具
    内网渗透思路简单介绍
  • 原文地址:https://www.cnblogs.com/itdef/p/14336553.html
Copyright © 2020-2023  润新知