# 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 classSolution: deflevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if root isNone: return []
cur = [root] ans = []
while cur: nxt = [] vals = [] for node in cur: vals.append(node.val) if node.left: nxt.append(node.left) if node.right: nxt.append(node.right) ans.append(vals) cur = nxt return ans
# 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 classSolution: deflevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if root isNone: return [] ans, q = [], [root]
while q: vals = [] for _ inrange(len(q)): node = q.pop(0) vals.append(node.val) if node.left: q.append(node.left) if node.right: q.append(node.right) ans.append(vals) return ans
# 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 classSolution: defzigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if root isNone: return []
ans, q = [], [root] even = False
while q: vals = [] for _ inrange(len(q)): node = q.pop(0) vals.append(node.val) if node.left: q.append(node.left) if node.right: q.append(node.right) ans.append(vals[::-1] if even else vals) even = not even return ans
# 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 classSolution: deffindBottomLeftValue(self, root: Optional[TreeNode]) -> int: q = [root] while q: node = q.pop(0) if node.right: q.append(node.right) if node.left: q.append(node.left) return node.val