<｜begin▁of▁sentence｜>### Instruction:
Given two full binary trees each with a height of 2, represented as NetworkX graph objects, how can you join these trees under a new root node to form a single full binary tree of height 3 using NetworkX's join_trees function? Also, ensure that the original node labels are preserved.
### Response:
import networkx as nx

# Create two full binary trees of height 2
tree1 = nx.balanced_tree(2, 2)
tree2 = nx.balanced_tree(2, 2)

# Join the trees by creating a new root and connecting it to the roots of the two trees
joined_tree = nx.join_trees([(tree1, 0), (tree2, 0)], label_attribute='original_label', first_label='new_root')

# Print the edges of the new tree to verify
print(list(joined_tree.edges()))
print('Is the joined tree a binary tree of height 3:', nx.is_isomorphic(joined_tree, nx.balanced_tree(2, 3)))
<|EOT|>
