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