[leetcode] B树是不是A树的子结构

给定两棵二叉树 tree1tree2,判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值

注意,空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值

示例 1:

复制代码
输入:tree1 = [1,7,5], tree2 = [6,1]
输出:false
解释:tree2 与 tree1 的一个子树没有相同的结构和节点值。

示例 2:

复制代码
输入:tree1 = [3,6,7,1,8], tree2 = [6,1]
输出:true
解释:tree2 与 tree1 的一个子树拥有相同的结构和节点值。即 6 - > 1。
复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSubStructure(TreeNode* A, TreeNode* B) {
        return (A != nullptr && B != nullptr) && (recur(A, B) || isSubStructure(A->left, B) || isSubStructure(A->right, B));
    }
private:
    bool recur(TreeNode* A, TreeNode* B) {
        if(B == nullptr) return true;
        if(A == nullptr) return false;
        return  A->val != B->val && recur(A->left, B->left) && recur(A->right, B->right);
    }
};
相关推荐
故事和你913 分钟前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
qq_4232339015 分钟前
C++与Python混合编程实战
开发语言·c++·算法
TracyCoder12326 分钟前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_7155753428 分钟前
分布式任务调度系统
开发语言·c++·算法
测试涛叔1 小时前
金三银四软件测试面试题(800道)
软件测试·面试·职场和发展
naruto_lnq1 小时前
泛型编程与STL设计思想
开发语言·c++·算法
踩坑记录1 小时前
leetcode hot100 94. 二叉树的中序遍历 easy 递归 dfs
leetcode
zxsz_com_cn1 小时前
设备预测性维护算法分类及优劣势分析,选型指南来了
算法·分类·数据挖掘
Angelina_Jolie2 小时前
一文搞懂 SCI、SSCI、CSSCI、C 刊、核心期刊:定义、作用、层级对比及投稿选择
考研·职场和发展·创业创新