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:

Print All the Nodes that don't have siblings.
Print All the Nodes that don’t have siblings.

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