LeetCode-101-对称二叉树(迭代法)(python)

对称二叉树

上一篇写了对称二叉树判断的递归解法:即对称子树需要满足:1.两棵子树根节点值相等 2. 左右子树镜像对称
这一篇讲解对称二叉树的迭代解法:主要思想是层序遍历判断每一层节点的值构成的数组是否是回文数组。

  1. 需要一个列表保存当前遍历层节点的值(layer)
  2. 需要一个列表保存当前层下一层的节点(next_queue)
  3. 定义一个列表queue获得上次循环的next_queue,初始为queue = [root]
  4. 当queue中节点非空节点,layer添加该节点的值,next_queue依次添加该节点的左右孩子节点(层序遍历思想);当节点为空节点的时候则layer添加None,这样最后一层的遍历完的时候,layer中的元素由于都是None,则next_queue不会添加任何节点,queue = next_queue = [ ],退出while循环,若之前未return False,则return True,程序结束。
class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        queue = [root]
        while queue:
            layer = []
            next_queue = []
            for node in queue:
                if not node:
                    layer.append(None)
                    continue

                layer.append(node.val)
                next_queue.append(node.left)
                next_queue.append(node.right)

            if layer != layer[::-1]:
                return False
            queue = next_queue
        return True
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,903评论 1 32
  • 二叉树基础知识:可查看http://www.cnblogs.com/polly333/p/4740355.html...
    雅芳阅读 3,051评论 0 0
  • 树的定义与基本术语   树型结构是一类重要的非线性数据结构,其中以树和二叉树最为常用,是以分支关系定义的层次结构。...
    java技术分享师阅读 4,845评论 0 1
  • 喝酒和吸毒一样,会上瘾的。 古有诗仙李太白,斗酒诗百篇,传为美谈,又如桃花源里陶渊明,悠然见南山的洒脱和闲适,就连...
    雕琢人生阅读 3,751评论 3 1
  • 很多人每天都按时按点的上班,辛苦工作,但是领导总说没有给公司创造出价值,那该怎么办? 那么个人对企业所提供的价值到...
    鸣说管理阅读 4,099评论 0 0

友情链接更多精彩内容