笔试面试题目:相同树的判断

又是周末,一月的深圳,有点微冷。冬日的太阳,懒洋洋,在阳台上睡了一个小时,帽子遮着脸,被老婆偷拍了一张图片图片

图片

去年十月份起,自己的工作内容发生了一些变化,写代码的时间减少了。新的工作内容,对自己是一个不小的挑战,用上级的话来说:目前还显稚嫩,需要多多提高。诚哉斯言。

太阳虽然晒得舒服,但还是得做点正事。于是,找点leetcode题目来玩玩,一方面是保持编程的思路,找找代码的感觉;另一方面也是保持公众号的连续性,持续为读者提供价值。

今天,我们来看一道笔试面试题目: 判断两棵二叉树是否相同。

图片

针对树的问题,一般都可以用递归的方法搞定。p树和q树是相同二叉树的充要条件是:

  • p.Val == q.Val

  • p.left和q.left是相同的树

  • p.right和q.right是相同的树

那么,我们怎么着手去写代码呢?显然,p.Val和q.Val存在的前提条件是p和q非空,所以,要提前对p和q的非空情况做判断:

q == nilq != nil
p == nil相同树不同树
p != nil不同树递归


直接看代码(经验证代码正确):

func isSameTree(p *TreeNode, q *TreeNode) bool {    if p == nil && q == nil {        return true    }
    if p == nil && q != nil {        return false    }
    if p != nil && q == nil {        return false    }
    if p.Val == q.Val && isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right) {        return true    }
    return false}

这篇文章,思路和代码都不难,故不过多赘述。未来,我们会继续讲解leetcode和其他笔试面试题目。也祝愿找工作的朋友,一切顺利,拿到money多多的offer.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值