手撕Leetcode #958——Python

958. 二叉树的完全性检验

题目描述:给定一个二叉树,确定它是否是一个完全二叉树。

解题思路:
这道题我们采用迭代的思想,一层一层地去检验完全二叉树。其实就是检查每一层是否“左对齐”。从根节点开始,在队列里存储它的子结点,如果是None,也存None。那么在某一层,如果出现了None夹在非None结点中间,那么就不是完全二叉树。

看代码:

import collections
class Solution:
    def isCompleteTree(self, root: TreeNode) -> bool:
        que = collections.deque()
        que.append(root)
        prev = que
        while que:
            curr = que.popleft()
            # 前一个结点是None,当前结点不是None
            if prev is None and curr:
                return False
            if curr:
                que.append(curr.left)
                que.append(curr.right)
            prev = curr
        return True

时间复杂度:O(N),即结点数;
空间复杂度:O(N),也是结点数。

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

友情链接更多精彩内容