题目链接100题
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
例如
示例1 示例2根据题目要求,我们首先想到的树采用递归的方法来解决问题
代码如下
func isSameTree(_p:TreeNode?,_q:TreeNode?) ->Bool{
if q == nil && p == nil{
return true
}
if q == nil || p == nil{
return false
}
if p!.val != q!.val{
return false
}
if isSameTree(p?.left, q?.left) && isSameTree(p?.right, q?.right){
return true
}
return false
}
这个写法提交之后显示是8ms,显示比97%的人要好。
题目链接101题力扣
然后我们来看看100题的拓展101题,题目的要求是给定一个二叉树,检查它是否是镜像对称的,这就是100题的拓展,为什么这么说呢?因为,我们把这棵树遍历两遍即可,即相当于把它当作两棵树同时遍历,比较其值是否相等,首先把这棵树先序遍历,然后把这棵树以根节点为起点,右子树为第二步开始先序遍历来比较两次的结果,若结果我完全一致,则镜像对称,否则不是镜像对称
代码如下
看起来就像直接调用了100题一样,其实就只改动了一点点而已。
网友评论