![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=1739275837-iMB0S0uq5kbBo3EJUOOtZpkXsgkX4G2C-0-9cda8e7cbfab903636175f2b3b1f6a2f)
![](https://epubservercos.yuewen.com/FBAA2E/17977546208666906/epubprivate/OEBPS/Images/978-7-111-65153-6_107_01.jpg?sign=1739275837-kWZyfOTC7PZB3QuWIoJnrF4q0Uk79mhY-0-b27288809e45f656d8b31df4ab4386c9)
程序的运行结果为
![](https://epubservercos.yuewen.com/FBAA2E/17977546208666906/epubprivate/OEBPS/Images/978-7-111-65153-6_107_02.jpg?sign=1739275837-MqjRcGNhmiECbqQKV4cNFRhsCtrrcchq-0-73954cf3389499c583d9d0d22fe1633a)
算法性能分析:
这个算法对两棵树只进行了一次遍历,因此,时间复杂度O(n)。此外,这个算法没有申请额外的存储空间。