一、104.二叉树的最大深度 (已经做过)
二、559.n叉树的最大深度
层序遍历时,记录下层数
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def maxDepth(self, root: 'Node') -> int:
if not root:
return 0
from collections import deque
que = deque([root])
count = 0
while que:
n = len(que)
for i in range(n):
node = que.popleft() # 更新结点
# for j in range(len(node.children)):# 孩子个数
# if node.children[j]: # 每一个孩子都加入que中
# que.append(node.children[j])
if node.children: # 直接判断了所有孩子
que.extend(node.children)
count += 1
return count
三、111.二叉树的最小深度 (已经做过)
注意结束条件
四、 222.完全二叉树的节点个数
# 层序遍历,删除一个结点,就计一个数
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def countNodes(self, root: Optional[TreeNode]) -> int:
from collections import deque
que = deque([root])
if not root:
return 0
count = 0
while que:
for i in range(len(que)):
node = que.popleft()
count += 1 # 层序遍历,删除一个结点,就计一个数
if node.left:
que.append(node.left)
if node.right:
que.append(node.right)
return count