介绍
使用Python怎么实现一个对称的二叉树?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
对称二叉树的含义非常容易理解,左右子树关于根节点对称,具体来讲,对于一颗对称二叉树的每一颗子树,以穿过根节点的直线为对称轴,左边子树的左节点=右边子树的右节点,左边子树的右节点=左边子树的左节点。所以对称二叉树的定义是针对一棵树,而判断的操作是针对节点,这时可以采取由上到下的顺序,从根节点依次向下判断,只需要重复调用函数,不需要回溯。
题目:对称的二叉树题:
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的
解题思路一:先遍历右子节点再遍历左子节点。注意,我们必须把遍历二叉树时遇到的空指针考虑进来。
class 解决方案: def 才能;isSymmetrical(自我,,pRoot): ,,,#,write code 这里 ,,,return self.isSymmetricalCore (pRoot pRoot) ,, def 才能isSymmetricalCore(自我、pRoot1 pRoot2): ,,,if not pRoot1 以及not pRoot2: ,,,,,return 真实的 ,,,if not pRoot1 或是not pRoot2: ,,,,,return 错误的 ,,,if pRoot1.val !=, pRoot2.val: ,,,,,return 错误的 ,,,return self.isSymmetricalCore (pRoot1.left pRoot2.right),以及self.isSymmetricalCore (pRoot1.right pRoot2.left)
解题思路二:迭代
def isSymmetric(自我,,根:& # 39;TreeNode& # 39;),→, & # 39; bool # 39;: 时间=stack 才能;root 以及((root.right root.left也)),,,, while 才能;堆栈: ,,,p1, p2 =, stack.pop () ,,,if not p1 以及not p2:继续 ,,,if not p1 或是not p2: return 假 ,,,if p1.val !=, p2.val: return 假 ,,,stack.append ((p1.left, p2.right)) ,,,stack.append ((p1.right, p2.left)) return 才能真正的
看完上述内容,你们掌握使用Python怎么实现一个对称的二叉树的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!