[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);
    }
};
相关推荐
起名方面没有灵感2 小时前
力扣23.合并K个升序链表
java·算法
啊烨疯狂学java2 小时前
0105java字节面经
java·jvm·算法
迪小莫学AI3 小时前
# LeetCode Problem 2038: 如果相邻两个颜色均相同则删除当前颜色 (Winner of the Game)
java·linux·leetcode
sjsjs114 小时前
【数据结构-堆】力扣3066. 超过阈值的最少操作数 II
数据结构·算法·leetcode
码农小菲4 小时前
vue3-dom-diff算法
开发语言·javascript·算法
ゞ 正在缓冲99%…4 小时前
leecode1143.最长公共子序列
数据结构·算法·leetcode
快乐星球居民13号4 小时前
【XJTUSE算法】考题回忆及复习建议
笔记·算法
qystca4 小时前
数据结构(1~10)
数据结构·c++·算法
winner88815 小时前
当算法遇到线性代数(三):实对称矩阵
线性代数·算法·矩阵·实对称矩阵
回音谷6 小时前
【算法】克里金(Kriging)插值原理及Python应用
python·算法·插值