申明:本文只用做自己的学习记录
题目
两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的
示例 1:
输入:p = [1,2,3], q = [1,2,3]
输出:true
示例 2:
输入:p = [1,2], q = [1,null,2]
输出:false
示例 3:
输入:p = [1,2,1], q = [1,1,2]
输出:false
代码
func isSameTree(p *TreeNode, q *TreeNode) bool {
return IsSameTree(p, q)
}
func IsSameTree(p *TreeNode, q *TreeNode) bool {
//判断成立条件
if p == nil && q == nil {
return true
}
//判断不符合的条件
if (p == nil && q != nil) || (p != nil && q == nil) || (p.Val != q.Val) {
return false
}
//若以上条都不符合,说明还没有遍历结束,继续遍历
return IsSameTree(p.Left, q.Left) && IsSameTree(p.Right, q.Right)
}