描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
输入:{8,8,#,9,#,2,#,5},{8,9,#,2}
返回值:true
class Solution {
public:
bool isSub(TreeNode* p1, TreeNode* p2) {
if (!p2) return true;
else if (!p1) return false;
// p1 和 p2 的根节点相同并且 p1 和 p2 的左子树和右子树分别相同
return p1->val == p2->val && isSub(p1->left, p2->left) && isSub(p1->right, p2->right);
}
bool HasSubtree(TreeNode* p1, TreeNode* p2) {
if (!p1 || !p2) return false;
return isSub(p1, p2) || HasSubtree(p1->left, p2) || HasSubtree(p1->right, p2);
}
};