2
* Definition for a binary tree node.3
* function TreeNode(val) {5
* this.left = this.right = null;9
* @param {TreeNode} root10
* @param {TreeNode} target14
var distanceK = function (root, target, k) {15
if (k === 0) return [target.val];19
const helper = (node, k, bool) => {20
if (node === null) return [false, 0];22
if (k === 0 && node.val !== target.val) {28
helper(node.left, k - 1, bool);29
helper(node.right, k - 1, bool);33
if (node.val === target.val) {34
//Here nodes of k distance are at bottom35
helper(node.left, k - 1, true);36
helper(node.right, k - 1, true);39
let [l, d] = helper(node.left, k, false);41
//Found target node on left side, now get nodes of k distance from right side as well46
helper(node.right, k - d - 1, true);50
let [r, d1] = helper(node.right, k, false);53
if (k - d1 === 0) res.push(node.val);54
helper(node.left, k - d1 - 1, true);55
return [true, d1 + 1];62
helper(root, k, false);