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