![C#程序员面试算法宝典](https://wfqqreader-1252317822.image.myqcloud.com/cover/733/33643733/b_33643733.jpg)
上QQ阅读APP看书,第一时间看更新
3.5 如何判断两棵二叉树是否相等
难度系数:★★★☆☆ 被考察系数:★★★★☆
题目描述:
两棵二叉树相等是指这两棵二叉树有着相同的结构,并且在相同位置上的结点有相同的值。如何判断两棵二叉树是否相等?
分析与解答:
如果两棵二叉树root1、root2相等,那么root1与root2结点的值相同,同时它们的左右孩子也有着相同的结构,并且对应位置上结点的值相等,即root1.data==root2.data,并且root1的左子树与root2的左子树相等,并且root1的右子树与root2的右子树相等。根据这个条件,可以非常容易地写出判断两棵二叉树是否相等的递归算法。实现代码如下:
![](https://epubservercos.yuewen.com/FBAA2E/17977546208666906/epubprivate/OEBPS/Images/978-7-111-65153-6_106_03.jpg?sign=1739238824-wAKVmK27BsIpWr8sr9RiwriPUEci7Ee9-0-7178fd5450042686897820dccd0cd288)
![](https://epubservercos.yuewen.com/FBAA2E/17977546208666906/epubprivate/OEBPS/Images/978-7-111-65153-6_107_01.jpg?sign=1739238824-RkDEtbO03C2fuOs4sNcVXTp4ZVpX7TG6-0-ef60d45abba66a3246040283bba650ed)
程序的运行结果为
![](https://epubservercos.yuewen.com/FBAA2E/17977546208666906/epubprivate/OEBPS/Images/978-7-111-65153-6_107_02.jpg?sign=1739238824-dpjusavjjME0L0yn1lNYzNohjCqCVPSs-0-4c0005eae795164590abc94d2be1c33e)
算法性能分析:
这个算法对两棵树只进行了一次遍历,因此,时间复杂度O(n)。此外,这个算法没有申请额外的存储空间。