# Given a binary tree, Print All the Nodes that don’t have Siblings.

Objective: Given a binary tree, Print All the Nodes that don’t have siblings.

Note: sibling node is the node which has the same parent, so you need to print the nodes who is a single child of his parent.

Input: A binary tree.

Example:

Approach:

• Do the inorder traversal.
• check if node has only child, if yes then print that child.

Complete Code:

 public class PrintNoSiblingsNodes { public void printOnlyLeaves(Node root){ if(root!=null){ printOnlyLeaves(root.left); if((root.left==null) && (root.right!=null)){ System.out.print("" + root.right.data); } if((root.left!=null) && (root.right==null)){ System.out.print("" + root.left.data); } printOnlyLeaves(root.right); } } 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(7); root.left.left.left = new Node(6); root.right.right = new Node(8); root.right.right.left = new Node(9); PrintNoSiblingsNodes i = new PrintNoSiblingsNodes(); System.out.print("Nodes with No Siblings: "); i.printOnlyLeaves(root); } } class Node{ int data; Node left; Node right; public Node(int data){ this.data = data; this.left = null; this.right =null; } }

Output:

```Nodes with No Siblings: 6 7 8 9
```

### 1 thought on “Given a binary tree, Print All the Nodes that don’t have Siblings.”

1. Why do we have to do in order traversal? won’t pre order work?