python 判断字符串是否相等_LeetCode基础算法题第92篇:判断两个二叉树是否相等...

ce4b253019250a613de176c88f4dbbb7.png

技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。

目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。

初级难度说的差不多的时候,我打算再加点其他内容,我可能会从操作系统到协议栈,从分布式聊到大数据框架,从大数据聊到人工智能,... ...。

如果有任何问题可以在文章后评论或者私信给我

我会持续分享下去,敬请您的关注。

LeetCode 100. 判断两个二叉树是否相等(Same Tree)

问题描述:

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例:

a21eea1978c237729756bd5e8a8c4b3e.png
922b3a43a7e3c309fabbc5ae84f2217c.png

C语言实现:

第一方法是暴力的方法,按照相同的遍历算法分别遍历p和q,产生两个列表,然后比较两个列表是否相等。

第二种方法是递归比较, 如下图(图中用的是前序遍历,实际算法中遍历顺序无关紧要):

213515737f4a3f59ebc506b5d1d07d2f.png

我们用递归的方法比较p和q的相同位置的节点:

  1. 如果都相等或者都为空就返回true;
  2. 如果出现任何对应节点的值不等,就返回false;
  3. 如果一个节点不为空,但对应的另一个节点为空返回false;

相比来说第二种算法的的效率要更好,空间复杂度也更低。。

我用这种方法来解这道题。

代码如下:

14d7df2ebc3a54af1b5181a5c5a351d4.png

这种算法在比较两个树的问题中是比较常用的,请大家务必记住

67c8f4b7f11fd9d49ba327931892f072.png

python语言的实现:

python的实现和C语言实现基本一致

代码如下:

a53da629275619a473f02c3ba82e134e.png
32576cb09ef4e07e7571ce21a126eafd.png

Java语言的实现:

Java的实现和C语言的实现基本一致。

代码如下:

7a8a4bda249ea5a40d870d94959836b3.png
7f6f2508862739d56ad3110c3aa23b6e.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值