二叉树的镜像中我们知道了此问题的解决方案是前序遍历,那么我们可以修改下前序遍历算法,父节点遍历后,先遍历它的右子节点,再遍历它的左子节点,我们把这种算法称为:对称前序遍历。,如下图所示的两棵树,我们分别列举下两种遍历的结果:,树A:,树B:,经过对比后,我们发现树A的两种遍历方法得到的结果是一样的,那么它就是对称的;树B的结果不同,它就不是对称的。,,如果有一颗不完全二叉树,它的所有节点都相同,他是对称的吗?,,针对于这种情况,我们就需要将它缺省的null节点进行补齐了,补齐后的两种遍历结果为:,对比两个结果后,我们发现并不一样,那么它就不是对称的。,,比对过程中:,二者都到达叶子节点,代表这棵树是对称的,任意一方到达叶子结点,代表这棵树不对称,节点值不同,这棵树不对称,接下来,我们以上个章节列举的例子为例,将其带入上述代码,验证下能否正确判断,如下所示:,,示例代码,本文所用代码完整版请移步:
© 版权声明
文章版权归作者所有,未经允许请勿转载。