题解 | #判断是不是完全二叉树#

判断是不是完全二叉树

http://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae

层序遍历的进阶版本,要考虑好各种情况,尤其在判断该层不是完全占满的各种条件。

import queue
class Solution:
    def isCompleteTree(self , root: TreeNode) -> bool:
        # write code here
        # 层序遍历,先找到该二叉树的层次,不同层次有不同层次的解法
        if not root:
            return True

        # 层序遍历
        q = queue.Queue()
        q.put(root)
        is_full_flag = True
        node = 1 
        while not q.empty():
            node_num = q.qsize()
            if is_full_flag and node_num < node:
                return False
            for i in range(node_num):
                temp =q.get()
                if is_full_flag:
                    if temp.left and temp.right:
                        q.put(temp.left)
                        q.put(temp.right)
                    elif not temp.left and temp.right:
                        return False
                    elif temp.left:
                        q.put(temp.left)
                        is_full_flag = False
                    else:
                        is_full_flag = False
                else:
                    if temp.left or temp.right:
                        return False
            node *= 2
        return True                              
全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务