判断完全二叉树

复制代码
 1 # Definition for a binary tree node.
 2 # class TreeNode:
 3 #     def __init__(self, val=0, left=None, right=None):
 4 #         self.val = val
 5 #         self.left = left
 6 #         self.right = right
 7 
 8 # 判断一个树是否是完全二叉树
 9 “”“
10 解决思路:
11 1、任一节点,有右孩子无左孩子,return False
12 2、在1不违规的条件下,如果遇到了第一个左右孩子不全的节点,后续节点均为叶子节点
13 ”“”
14 from collections import deque
15 def is_valid_cbt(head: TreeNode) -> bool:
16     # 采用宽度优先遍历,需使用队列作为辅助
17     if head is None:
18         return True
19     queue = deque()
20     # 是否遇到过左右两个孩子节点不双全的节点
21     leaf = False
22     queue.append(head)
23     while queue:
24         head = queue.popleft()
25         l = head.left
26         r = head.right
27         # 条件2
28         if (leaf and (l is not None or r is not None)) \
29             # 条件1
30             or (l is None and r is not None):
31             return False
32 
33         if l is not None:
34             queue.append(l)
35         if r is not None:
36             queue.append(r)
37         if l is None or r is None:
38             leaf = True
39     return True
复制代码

 

posted @   CaptainDragonfly  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示