def _deserialize_binary_tree(serialized_tree: List[Any]) -> BinaryTree: current_value = serialized_tree.pop(0) if current_value: root = BinaryTree(current_value) root.left = _deserialize_binary_tree(serialized_tree) root.right = _deserialize_binary_tree(serialized_tree) return root
def merge_binary_trees(b1: BinaryTree, b2: BinaryTree) -> BinaryTree: if b1 and b2: root = BinaryTree(b1.value + b2.value) root.left = merge_binary_trees(b1.left, b2.left) root.right = merge_binary_trees(b1.right, b2.right) return root else: return b1 or b2
If only one input tree has a node in a given position, the corresponding node in the new tree should match that input node. """ from data_structures.binary_tree import BinaryTree def merge_binary_trees(b1: BinaryTree, b2: BinaryTree) -> BinaryTree: if b1 and b2: root = BinaryTree(b1.value + b2.value) root.left = merge_binary_trees(b1.left, b2.left) root.right = merge_binary_trees(b1.right, b2.right) return root else: return b1 or b2 if __name__ == '__main__': tree1 = BinaryTree(3) tree1.left = BinaryTree(2) tree1.right = BinaryTree(1) tree1.display() tree2 = BinaryTree(5) tree2.left = BinaryTree(3) tree2.right = BinaryTree(2) tree2.right.right = BinaryTree(1) tree2.display() merged_tree = merge_binary_trees(tree1, tree2) merged_tree.display()
def deserialize_binary_tree(serialized_tree: str) -> BinaryTree: return _deserialize_binary_tree(ast.literal_eval(serialized_tree)) def _deserialize_binary_tree(serialized_tree: List[Any]) -> BinaryTree: current_value = serialized_tree.pop(0) if current_value: root = BinaryTree(current_value) root.left = _deserialize_binary_tree(serialized_tree) root.right = _deserialize_binary_tree(serialized_tree) return root if __name__ == '__main__': root = BinaryTree(6) root.left = BinaryTree(4) root.left.left = BinaryTree(2) root.left.left.left = BinaryTree(1) root.left.left.right = BinaryTree(3) root.left.right = BinaryTree(5) root.right = BinaryTree(9) root.right.left = BinaryTree(7) root.right.left.right = BinaryTree(8) root.right.right = BinaryTree(10) root.display() serialized_binary_tree = serialize_binary_tree(root) print(serialized_binary_tree) root = deserialize_binary_tree(serialized_binary_tree) root.display()