刷题系列——Python判断是否镜像对称二叉树

  

继续刷题,判断是否镜像对称二叉树。

  

  对称二叉树,顾名思义,以根节点为轴,左右节点和节点内容互为镜像;如下图所示。这里要避免和完全二叉树混淆。

  

  刷题系列——Python判断是否镜像对称二叉树

     

这个我还是考虑了一段时间,递归和迭代都可以实现。递归的,如果一个节点值作为输入很难实现,所以新建一个新方法递归,输入左右两个节点,返回bool值。思路很简单,如果输入两个节点都是空,可能是单个跟节点,返回正确的;如果一个有,另一个为空,返回假;如果左右两个节点,如果节点值相等,这里递归,把这两个节点的子节点左右对比,并按照和关联,如果有一个下层对比假,则所有都是假的。如果都为真,则层层返回真的。

     

递归的核心点,就是定义传入下一次递归输入,和如何处理下一次递归的返回。

  
 #, Definition  for  a  binary  tree 节点。
  #,class  TreeNode:
  #,,,,,def  __init__(自我,,x):
  #,,,,,,,,,self.val =, x
  #,,,,,,,,,self.left =,没有
  #,,,,,,,,,self.right =,没有
  class 解决方案:
  ,,,def  isSymmetric(自我,,根:TreeNode),→, bool:
  ,,,,,,,if 根==,没有:
  ,,,,,,,,,,,return 真实的
  ,,,,,,,其他的:
  ,,,,,,,,,,,return 递归(root.left root.right)
  ,,,,,,,
  def 递归(leftNode rightNode):
  ,,,,,,,if  leftNode ==, None 以及rightNode ==,没有:
  ,,,,,,,,,,,return 真实的
  ,,,,,,,elif  leftNode  !=, None 以及rightNode  !=,没有:
  ,,,,,,,,,,,if  leftNode.val ==rightNode.val:
  ,,,,,,,,,,,,,,,return 递归(leftNode.left rightNode.right),以及递归(leftNode.right rightNode.left)
  ,,,,,,,,,,,其他的:
  ,,,,,,,,,,,,,,,return 错误的
  ,,,,,,,其他的:
  ,,,,,,,,,,,return 假

刷题系列——Python判断是否镜像对称二叉树