26.树的子结构
Last updated
Last updated
func isSubStructure(_ A: TreeNode?, _ B: TreeNode?) -> Bool {
guard let treeA = A, let treeB = B else { return false }
return (isContain(A, treeB) || isSubStructure(treeA.left, treeB) || isSubStructure(treeA.right, treeB))
}func isContain(_ A: TreeNode?, _ B: TreeNode?) -> Bool {
if B == nil {
return true // B遍历完了 不论A还有没有 A已经包含了A了
}
if A == nil {
return false // A遍历完了 B还有 肯定不包含
}
guard let treeA = A, let treeB = B, treeA.val == treeB.val else { return false }
return isContain(treeA.left, treeB.left) && isContain(treeA.right, treeB.right)
}