All Nodes Distance K in Binary Tree LeetCode solution in JavaScript

1
/**
2
* Definition for a binary tree node.
3
* function TreeNode(val) {
4
* this.val = val;
5
* this.left = this.right = null;
6
* }
7
*/
8
/**
9
* @param {TreeNode} root
10
* @param {TreeNode} target
11
* @param {number} k
12
* @return {number[]}
13
*/
14
var distanceK = function (root, target, k) {
15
if (k === 0) return [target.val];
16

17
let res = [];
18

19
const helper = (node, k, bool) => {
20
if (node === null) return [false, 0];
21

22
if (k === 0 && node.val !== target.val) {
23
res.push(node.val);
24
return null;
25
}
26

27
if (bool) {
28
helper(node.left, k - 1, bool);
29
helper(node.right, k - 1, bool);
30
return null;
31
}
32

33
if (node.val === target.val) {
34
//Here nodes of k distance are at bottom
35
helper(node.left, k - 1, true);
36
helper(node.right, k - 1, true);
37
return [true, 1];
38
} else {
39
let [l, d] = helper(node.left, k, false);
40

41
//Found target node on left side, now get nodes of k distance from right side as well
42
if (l === true) {
43
if (k - d === 0)
44
//for current node
45
res.push(node.val);
46
helper(node.right, k - d - 1, true);
47
return [true, d + 1];
48
}
49

50
let [r, d1] = helper(node.right, k, false);
51

52
if (r === true) {
53
if (k - d1 === 0) res.push(node.val);
54
helper(node.left, k - d1 - 1, true);
55
return [true, d1 + 1];
56
}
57

58
return [false, 0];
59
}
60
};
61

62
helper(root, k, false);
63

64
return res;
65
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0