给定两棵二叉树 tree1 和 tree2,判断 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);}
};