当前位置: 代码迷 >> 综合 >> leetcode 572. Subtree of Another Tree (easy)
  详细解决方案

leetcode 572. Subtree of Another Tree (easy)

热度:27   发布时间:2024-01-05 00:38:54.0

递归
判断是否是子树需要分为两个步骤:
一、判断是否是子树
对每个s的节点si,有三种情况,其中一种情况成立则返回true

  1. 以si为根节点的子树 = t树
  2. 以si的左子树为根节点的子树 = t树
  3. 以si的右子树为根节点的子树 = t树

二、判断两个树是否相等
这个判断可以参考leetcode 101. 判断镜像树的步骤:

  1. 两边都不存在 true
  2. 一边不存在,一边存在 false
  3. 值不相等 false
  4. 值相等 判断左右子树是否相等
class Solution
{public:bool isSubtree(TreeNode *s, TreeNode *t){if (!s || !t)return false;return helper(s, t) || isSubtree(s->left, t) || isSubtree(s->right, t);}bool helper(TreeNode *s, TreeNode *t){if (!s && !t)return true;if ((!s && t) || (s && !t))return false;if (s->val == t->val)return helper(s->left, t->left) && helper(s->right, t->right);return false;}
};
  相关解决方案