题目描述
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
题解
树的问题,递归解决。题目未说明是否会出现数值相同的节点
- 是左子树的子树;2. 是右子树的子树;3. 从根节点重合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class Solution { bool isSub(TreeNode* A, TreeNode* B) { if(B==NULL)return true; if(A==NULL)return false; if(A->val==B->val) return isSub(A->left,B->left)&&isSub(A->right,B->right); return false; } public: bool isSubStructure(TreeNode* A, TreeNode* B) { if(B==NULL||A==NULL)return false; return isSub(A,B) || isSubStructure(A->left,B) || isSubStructure(A->right,B); } };
|