刷题系列 - Python判断是否镜像对称二叉树
继续刷题,判断是否镜像对称二叉树。
镜像对称二叉树,顾名思义,以根节点为轴,左右节点和节点内容互为镜像;如下图所示。这里要避免和完全二叉树混淆。
这个我还是考虑了一段时间,递归和迭代都可以实现。递归的,如果一个节点值作为输入很难实现,所以新建一个新方法recurse,输入左右两个节点,返回bool值。思路很简单,如果输入两个节点都是空,可能是单个跟节点,返回True;如果一个有,另一个为空,返回False;如果左右两个节点,如果节点值相等,这里递归,把这两个节点的子节点左右对比,并按照and 关联,如果有一个下层对比False,则所有都是False。如果都为True,则层层返回True。
递归的核心点,就是定义传入下一次递归输入,和如何处理下一次递归的返回。
#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=NoneclassSolution:defisSymmetric(self,root:TreeNode)->bool:ifroot==None:returnTrueelse:returnrecurse(root.left,root.right)defrecurse(leftNode,rightNode):ifleftNode==NoneandrightNode==None:returnTrueelifleftNode!=NoneandrightNode!=None:ifleftNode.val==rightNode.val:returnrecurse(leftNode.left,rightNode.right)andrecurse(leftNode.right,rightNode.left)else:returnFalseelse:returnFalse
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。