class Solution: def isSymmetric(self, root: Optional[TreeNode]) -> bool: que = deque() if root: que.append(root) count = 0 while que: cur_level = [] for _ in range(len(que)): cur = que.popleft() cur_level.append(cur.val)
if cur.left: que.append(cur.left) if cur.right: que.append(cur.right)
if len(cur_level) == 2 ** count: l, r = 0, len(cur_level) - 1 while l <= r: if cur_level[l] != cur_level[r]: return False else: l += 1 r -= 1 else: return False count += 1 return True
if l != None and r == None: return False elif l == None and r != None: return False elif l == None and r == None: return True else: if r.val != l.val: return False else: # 左右节点都不为空,且节点相等,开始遍历子节点 inter = treverse(l.right, r.left) out = treverse(l.left, r.right) if out & inter: return True else: return False if root: return treverse(root.left, root.right) else: return False
104.二叉树的最大深度
层序遍历,返回 res 的长度
111.二叉树的最小深度
层序遍历,节点的左右都为空时,则返回当前深度
222.完全二叉树的节点个数
完全二叉树:除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^(h-1) 个节点