方法1:分而治之
// 方法1:分而治之
func isSameTree(p *TreeNode, q *TreeNode) bool {
// 如果都存在,但是值不同,没必要继续递归了,肯定不同
if p != nil && q != nil && p.Val != q.Val {
return false
}
// 如果都是null,相同
if p == nil && q == nil {
return true // 非常重要:递归的终点
}
// 如果p和q都不为空且值相同+左子树相同+右子树相同,相同
if p != nil && q != nil && p.Val == q.Val && isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right) {
return true
}
// 递归遍历完了都不相同,不相同
return false
}