使用Python怎么实现一个对称的二叉树

  介绍

使用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怎么实现一个对称的二叉树的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

使用Python怎么实现一个对称的二叉树