给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
解题思路:对于每个节点判断
class Solution {
public:
bool isSubtree(TreeNode* s, TreeNode* t)
{
if (!s) return false;
return isSubtree(s->left, t) || SameTree(s, t) || isSubtree(s->right, t);
}
bool SameTree(TreeNode* s, TreeNode* t)
{
if (s == nullptr && t == nullptr) return true;
if (s == nullptr || t == nullptr) return false;
return s->val == t->val && SameTree(s->left, t->left) && SameTree(s->right, t->right);
}
};