题解 | #对称的二叉树#

对称的二叉树

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

# 解题思路(迭代)
使用迭代的方法,先装上根节点,根节点单独讨论,因为他只有左子和右子,然后下次弹出的队列就是偶数了,分别装载(左左,右右)和(左右,右左),如果只有一个非空,返回False,两个都为空跳过,弹出连续两个节点对,如果数值不相等,则返回False,队列如果为空了还没有返回False,就返回True。
import collections

class Solution:
    def isSymmetrical(self , pRoot: TreeNode) -> bool:
        # write code here
        if not pRoot: return True
        deque = collections.deque()
        deque.append(pRoot)
        while deque:
            if len(deque) == 1:
                root = deque.popleft()
                if root.left and root.right:
                    deque.append(root.left)
                    deque.append(root.right)
                elif root.left or root.right:
                    return False
            else:
                nodeLeft = deque.popleft()
                nodeRight = deque.popleft()
                if nodeLeft.val != nodeRight.val: return False
                if nodeLeft.left and nodeRight.right:
                    deque.append(nodeLeft.left)
                    deque.append(nodeRight.right)
                elif nodeLeft.left or nodeRight.right:
                    return False
                if nodeLeft.right and nodeRight.left:
                    deque.append(nodeLeft.right)
                    deque.append(nodeRight.left)
                elif nodeLeft.right or nodeRight.left:
                    return False
        return True


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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