572-另一棵树的子树
思路:递归
ts
function isSubtree(root: TreeNode | null, subRoot: TreeNode | null): boolean {
// 不停地比较,某一个子树,是不是和 subRoot 一样
if (root === null) return false
// 值相同时,有可能符合要求
// 借用 isSameTree 进行比较
if (root.val === subRoot.val && isSameTree(root, subRoot)) return true
// 递归
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
function isSameTree(p: TreeNode | null, q: TreeNode | null): boolean {
if (p === null && q === null) return true
if (p === null || q === null) return false
if (p.val !== q.val) return false
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
}
}function isSubtree(root: TreeNode | null, subRoot: TreeNode | null): boolean {
// 不停地比较,某一个子树,是不是和 subRoot 一样
if (root === null) return false
// 值相同时,有可能符合要求
// 借用 isSameTree 进行比较
if (root.val === subRoot.val && isSameTree(root, subRoot)) return true
// 递归
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
function isSameTree(p: TreeNode | null, q: TreeNode | null): boolean {
if (p === null && q === null) return true
if (p === null || q === null) return false
if (p.val !== q.val) return false
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
}
}
Ayingotts's notes