LeetCode 0863. All Nodes Distance K in Binary Tree Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0863. All Nodes Distance K in Binary Tree

Description

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.

 

Example 1:

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.

Example 2:

Input: root = [1], target = 1, k = 3
Output: []

 

Constraints:

  • The number of nodes in the tree is in the range [1, 500].
  • 0 <= Node.val <= 500
  • All the values Node.val are unique.
  • target is the value of one of the nodes in the tree.
  • 0 <= k <= 1000

Solutions

Solution 1: DFS + Hash Table

We first use DFS to traverse the entire tree and save each node's parent node in the hash table g.

Next, we use DFS again, starting from target, to search for nodes at a distance of k both upwards and downwards, and add them to the result array.

The time complexity is O(n), and the space complexity is O(n). Here, n is the number of nodes in the binary tree.

PythonJavaC++GoTypeScript
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def distanceK(self, root: TreeNode, target: TreeNode, k: int) -> List[int]: def dfs(root, fa): if root is None: return g[root] = fa dfs(root.left, root) dfs(root.right, root) def dfs2(root, fa, k): if root is None: return if k == 0: ans.append(root.val) return for nxt in (root.left, root.right, g[root]): if nxt != fa: dfs2(nxt, root, k - 1) g = {} dfs(root, None) ans = [] dfs2(target, None, k) return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !