Find the k distance nodes in a binary tree.
Implement distance_k_nodes(root, target, k), where root is a nested binary tree dictionary, target is a unique node value, and k is a nonnegative distance. Return node values exactly k edges from the target, ordered by BFS discovery using left child, right child, then parent links. Return [] if the tree is empty, the target is absent, or no nodes are at that distance.
Each node has the form {"val": value, "left": node_or_null, "right": node_or_null}.
def distance_k_nodes(root, target, k):