# Print All The Nodes Which are X distance from the Root

Objec­tive: - Given Binary Tree, Print all the nodes which are X dis­tance from the root

Exam­ple :

Nodes at X dis­tances from root

Appraoch:

• Idea is very simple.
• Do the pre­order tra­ver­sal, pass x as parameter.
• While going down, at each level, keep reduc­ing the x by 1
• When x = 0 , the means you have reached to the nodes which are at x dis­tance from root, Print them.

Com­plete Code:

```package PrintNodesAtKDistance;

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
```

#### You may also like...

• Ramachan­dran Krishnan

Code should be like that
pub­lic 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);
}
}

• eugen_nw

I’d rather go with:

pub­lic void print(Node root, int k) {

if (root == null) {
return;
}

if (k == 0) {
System.out.print(“ ” + root.data);
return; // there’s no point in iter­at­ing any fur­ther
}
k–;
print(root.left, k);
print(root.right, k);
}