def main(): solver = Solution() for test in [[1, None, 2, None, None, 3]]: root = TreeNode() root.build_from_list(test) print(solver.preorderTraversal(root)) pass
class Solution: # @param root, a tree node # @return a list of lists of integers def levelOrderBottom(self, root): if root is None: return [] result = [] cur_level = [root] next_level = [] while len(cur_level) > 0: values = [] for node in cur_level: values.append(node.val) if node.left is not None: next_level.append(node.left) if node.right is not None: next_level.append(node.right) cur_level = next_level next_level = [] result.append(values) return result[::-1] if __name__ == '__main__': root = TreeNode() root.build_from_list([3, 9, 20, None, None, 15, 7]) res = Solution().levelOrderBottom(root) print(res)
# bfs depth = 1 found_leaf = False cur_depth = [root] next_depth = [] while True: next_depth = [] for node in cur_depth: is_leaf = True if node.left is not None: next_depth.append(node.left) is_leaf = False if node.right is not None: next_depth.append(node.right) is_leaf = False if is_leaf is True: found_leaf = True break if found_leaf is True: break else: depth += 1 cur_depth = next_depth return depth if __name__ == '__main__': root = TreeNode() root.build_from_list(list(range(10))) print(Solution().minDepth(root))
ltail.left = None ltail.right = None return root, ltail elif root.left is not None and root.right is not None: lhead, ltail = gao(root.left) rhead, rtail = gao(root.right) root.left = None root.right = lhead lhead.left = None ltail.left = None ltail.right = rhead rhead.left = None rtail.left = None rtail.right = None return root, rtail gao(root) solver = Solution() root5 = TreeNode() root5.build_from_list([1,2,3,4]) solver.flatten(root5) print(root5.to_dict()) root4 = TreeNode() root4.build_from_list([2,1,4,None,None,3,5]) solver.flatten(root4) print(root4.to_dict())