429. N 叉树的层序遍历
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def levelOrder(self, root: 'Node') -> List[List[int]]:
if not root:
return []
res = []
temps = [root]
while temps:
temp = []
re = []
for i in range(len(temps)):
re.append(temps[i].val)
if temps[i].children:
temp.extend(temps[i].children)
res.append(re)
temps = temp
return res
515. 在每个树行中找最大值
# 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 largestValues(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
res = []
temps = [root]
while temps:
temp = []
re = temps[0].val
for i in range(len(temps)):
re = max(re,temps[i].val)
if temps[i].left:
temp.append(temps[i].left)
if temps[i].right:
temp.append(temps[i].right)
res.append(re)
temps = temp
return res
116. 填充每个节点的下一个右侧节点指针
"""
# Definition for a Node.
class Node:
def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
self.val = val
self.left = left
self.right = right
self.next = next
"""
class Solution:
def connect(self, root: 'Node') -> 'Node':
if not root:
return
temps = [root]
while temps:
temp = []
for i in range(len(temps)-1):
temps[i].next = temps[i+1]
if temps[i].left:
temp.append(temps[i].left)
if temps[i].right:
temp.append(temps[i].right)
temps[-1].next = None
if temps[-1].left:
temp.append(temps[-1].left)
if temps[-1].right:
temp.append(temps[-1].right)
temps = temp
return root
104. 二叉树的最大深度
# 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 maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
count = 0
temps = [root]
while temps:
temp = []
for i in range(len(temps)):
if temps[i].left:
temp.append(temps[i].left)
if temps[i].right:
temp.append(temps[i].right)
temps = temp
count += 1
return count
111. 二叉树的最小深度
# 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 minDepth(self, root: TreeNode) -> int:
if not root:
return 0
count = 0
temps = [root]
while temps:
temp = []
for i in range(len(temps)):
if temps[i].left:
temp.append(temps[i].left)
if temps[i].right:
temp.append(temps[i].right)
if not temps[i].left and not temps[i].right:
return count+1
temps = temp
count += 1
return count