Print All The Nodes Which are X distance from the Root

Objective: Given Binary Tree, Print all the nodes which are X distance from the root

Example :

Nodes at X distances from root
Nodes at X distances from root

Appraoch:

  • Idea is very simple.
  • Do the preorder traversal, pass x as parameter.
  • While going down, at each level, keep reducing the x by 1
  • When x = 0 , the means you have reached to the nodes which are at x distance from root, Print them.

Complete Code:

public class PrintNodesAtKDistance {
public void print(Node root, int k) {
if (root != null) {
if (k == 0) {
System.out.print(" " + root.data);
}
print(root.left, k);
print(root.right, k);
}
}
public static void main(String[] args) throws java.lang.Exception {
Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);
root.left.right = new Node(5);
root.left.right.left = new Node(6);
root.left.right.right = new Node(7);
root.right.right = new Node(8);
root.right.right.right = new Node(9);
PrintNodesAtKDistance i = new PrintNodesAtKDistance();
System.out.println("Nodes at 3 distance from root : ");
i.print(root, 3);
}
}
class Node {
int data;
Node left;
Node right;
public Node(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}

Output:
Nodes at 3 distance from root : 
 6 7 9