import collections from typing import List from Python.q0tree import TreeNode, stringToTreeNode class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root: return [] result = collections.defaultdict(list) queue = collections.deque([(root, 0)]) while queue: tree_node, level = queue.popleft() if not tree_node: continue result[level].append(tree_node.val) queue.append((tree_node.left, level + 1)) queue.append((tree_node.right, level + 1)) return list(result.values()) s = Solution() root = stringToTreeNode('[3,9,20,null,null,15,7]') print(s.levelOrder(root)) exit(0)
import collections from typing import List from Python.q0tree import TreeNode, stringToTreeNode class Solution: def rightSideView(self, root: TreeNode) -> List[int]: if not root: return [] res = [] queue = collections.deque([root]) while queue: level_length = len(queue) for i in range(level_length): tree_node = queue.popleft() if i == (level_length - 1): res.append(tree_node.val) if tree_node.left: queue.append(tree_node.left) if tree_node.right: queue.append(tree_node.right) return res s = Solution() root = stringToTreeNode('[1,2,3,null,5,null,4]') print(s.rightSideView(root)) exit(0)
import collections from Python.q0tree import TreeNode, stringToTreeNode class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 queue = collections.deque([(root, 1)]) while (queue): node, level = queue.popleft() if not node: continue if not node.left and not node.right: return level queue.append((node.left, level + 1)) queue.append((node.right, level + 1)) s = Solution() # root = stringToTreeNode('[3,9,20,null,null,15,7]') root = stringToTreeNode('[2,null,3,null,4,null,5,null,6]') root = stringToTreeNode('[3,9,20,null,null,15,7]') print(s.minDepth(root)) exit(0)
import collections from Python.q0tree import stringToTreeNode class Solution: def connect(self, root: 'Node') -> 'Node': if not root: return root queue = collections.deque([root]) while queue: level_length = len(queue) for i in range(level_length): tree_node = queue.popleft() if i == (level_length - 1): tree_node.next = None else: tree_node.next = queue[0] if tree_node.left: queue.append(tree_node.left) if tree_node.right: queue.append(tree_node.right) return root s = Solution() root = stringToTreeNode('[1,2,3,4,5,6,7]') print(s.connect(root)) exit(0)