2
public List<Integer> distanceK(TreeNode root, TreeNode target, int k) {3
HashMap<TreeNode, TreeNode> map = new HashMap<>();5
Queue<TreeNode> q = new LinkedList<>();8
HashSet<TreeNode> visited = new HashSet<>();10
while (!q.isEmpty()) {11
if (distance == k) break;14
for (int i = 0; i < size; i++) {15
TreeNode current = q.poll();16
if (current.left != null && !visited.contains(current.left)) {18
visited.add(current.left);20
if (current.right != null && !visited.contains(current.right)) {22
visited.add(current.right);24
if (map.containsKey(current) && !visited.contains(map.get(current))) {25
q.add(map.get(current));26
visited.add(map.get(current));30
List<Integer> ans = new ArrayList<>();31
while (!q.isEmpty()) ans.add(q.poll().val);35
public void get_parent(TreeNode root, HashMap<TreeNode, TreeNode> map) {36
Queue<TreeNode> q = new LinkedList<>();38
while (!q.isEmpty()) {40
for (int i = 0; i < size; i++) {41
TreeNode current = q.poll();42
if (current.left != null) {43
map.put(current.left, current);46
if (current.right != null) {47
map.put(current.right, current);