题解 | #对称的二叉树#

对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

python3,非递归方法,对称性,对应着回文性。
对左右子树分别做层次遍历,各自维护一个栈,因为对称性对应着回文性,所以入栈的顺序变一下,则对称性必会导致栈相同,如果不同则无对称性

class Solution:
    def isSymmetrical(self , pRoot: TreeNode) -> bool:
        if not pRoot: 
            return True
        #辅助队列用于从两边层次遍历
        l1 = []
        l2 = []
        l1.append(pRoot.left)
        l2.append(pRoot.right)
        while l1 and l2: 
            # 左右两个栈,弹出
            l = l1.pop(0)  
            r = l2.pop(0)

            if not l and not r:
                continue

            # 不对称的情况,直接False
            if not l or not r or l.val != r.val:
                return False

            # 从左往右加入队列
            q1.append(l.left) 
            q1.append(l.right)
            # 从右往左加入队列
            q2.append(r.right) 
            q2.append(r.left)

        return True 
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 20:37
点赞 评论 收藏
分享
牛客29046817...:优化一下简历,突出重点,简历上的技能复习扎实,实习工作啥的整理成文档梳理一下怎么说要有自己的思考在里边,岗位的话运维,测试,开发,实施,技术支持能投的都投,多投递能找到的,秋招投递了3个月左右(8月中旬到11月下旬),boos打招呼8000多次,官网投递300多家,才找到一家满意的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务