Given the root of a binary tree, the value of a target node target, and an integer k, return an array of the values of all nodes that have a distance k from the target node.
You can return the answer in any order.
Input: root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2
Output: [7,4,1]
Explanation: The nodes that are a distance 2 from the target node (with value 5) have values 7, 4, and 1.
Input: root = [1], target = 1, k = 3
Output: []
[1, 500].0 <= Node.val <= 500Node.val are unique.target is the value of one of the nodes in the tree.0 <= k <= 1000The problem can be simplified by viewing the binary tree as an undirected graph. Each node can be connected to its children and, for our purposes, we can connect each child back to its parent, forming a graph-like adjacency list. Once this graph is prepared, we can perform a Breadth-First Search (BFS) to find all nodes that are exactly K distance away from the target node.
Instead of explicitly building a graph, we can use a combination of DFS and BFS directly on the tree structure. First, use DFS to find the path to the target node. Then, treat this path as the base and perform BFS from the target while marking distances in the BFS.