# Printing Root to Leaf Path of a Binary Search Tree Data Structure

In this tutorial we will learn how to print Root to Leaf Path of a Binary Search Tree with some examples.

## What is Binary Search Tree?

Binary Search Tree is a node-based data structure which has following properties.

• Left subtree nodes always be less than the root node.
• Right subtree nodes always be greater than the root node.
• Left and right subtree is also Binary Search Tree. You can learn more about the Binary Search Tree from Here.

## Code To Print Root to leaf Nodes Path

The following code contains also creating a Binary Search Tree. Then the printing path code is written. because we needed to create a Binary Search Tree before printing its leaf path. Recursion is used to print the leaf path. Recursion is the best way used in Data Structure programming.

Explanation:
1. First define a base condition (if node == null).

``````
import java.util.ArrayList;

public class BinaryTreeBT {

static class Node {
int data;
Node left;
Node right;

Node(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}

// creating binary search tree
public static Node createBST(Node root, int val) {
if (root == null) {
root = new Node(val);
return root;
}

if (root.data > val) {
root.left = createBST(root.left, val);
} else {
root.right = createBST(root.right, val);
}

return root;
}

//print Root to leaf path
public static void printRoot2Leaf(Node root, ArrayList<Integer> path){
if(root == null){
return;
}
if(root.left == null && root.right == null){
printPath(path);
}else{
printRoot2Leaf(root.left, path);
printRoot2Leaf(root.right, path);
}
path.remove(path.size()-1);

}
public static void printPath(ArrayList<Integer> path){
for(int i= 0; i<path.size(); i++){
System.out.print(path.get(i) + "->");
}

System.out.println();
}

public static void main(String[] args) {
int[] values = {12, 8, 10, 1, 3, 4, 6, 9, 15};
Node root = null;

// creating binary search tree
for(int i=0; i<values.length; i++){
root = createBST(root, values[i]);
}

printRoot2Leaf(root, new ArrayList<>());

}
}
``````

Answer: You will get the following result.

12->8->1->3->4->6->
12->8->10->9->
12->15->

Thank you for reaching out this tutorial. You can comment in the comments section below for any doubt or question. You can learn more about it here.