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

判断是不是完全二叉树

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

from pickle import APPEND
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#  
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @return bool布尔型
#
"""

  什么是完全二叉树 
  叶子节点只能出现在

"""


class Solution:
    def isCompleteTree_bak(self , root: TreeNode) -> bool:
        # write code here
        """
        使用层序遍历   4/8 组用例通过
         1.设置两个数组 cur  next 记录下一行
         2. res 统计每行的个数
        """
        if not root:  # 空树是完全二叉树
            return True
        res=[]
        cur=[root]
        while cur:
            next=[]
            res.append(len(cur))
            for node in cur:
                # 如果出现一个节点是有右节点每没有左节点的 不满足集中左侧
                # [1,2,3,4,5,#,6]
                # [3,1,7,#,#,8]
                if not  node.left and  node .right:
                    return False  
                if node.left: 
                    next.append(node.left)
                if node.right:
                    next.append(node.right)
            cur=next 
        print(res )
        for i in range(len(res)-1):
            if res[i]!=i+1:
                return False   
        return True 
            
    def isCompleteTree(self , root: TreeNode) -> bool:
        # write code here
        """
        使用层序遍历   4/8 组用例通过
         1.设置两个数组 cur  next 记录下一行
         2. res 统计每行的个数
        """
        if not root:  # 空树是完全二叉树
            return True
        import collections
        dq=collections.deque()
        dq.append(root)
        flag =False # 首次出现为空的
        while dq:
            sz=len(dq)
            for i in range(sz):
               cur = dq.popleft()
               if not  cur :
                 flag=True
                 continue # 
            
               if flag:# 后续遇到空节点
                    return False # 说明前面遇到过空节点
               dq.append(cur.left)
               dq.append(cur.right)
        

        return True 
  
        return True 



全部评论

相关推荐

04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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