Skip to content

Commit 0aea53b

Browse files
Binary Search Tree Traversal
1 parent 4ab0bc0 commit 0aea53b

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

src/main/java/dsa/trees/BinarySearchTreeTraversal.java

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dsa.trees;
22

3+
import java.util.LinkedList;
4+
import java.util.Queue;
35
import java.util.Scanner;
46

57
public class BinarySearchTreeTraversal extends BinaryTree {
@@ -43,9 +45,57 @@ private void postOrder(Node node) {
4345
System.out.print(node.getRight() + " ");
4446
}
4547

48+
public static void levelOrder(Node node) {
49+
if (node == null) {
50+
return;
51+
}
52+
Queue<Node> q = new LinkedList<>();
53+
q.add(node);
54+
q.add(null);
55+
while (!q.isEmpty()) {
56+
Node curr = q.remove();
57+
if (curr == null) {
58+
System.out.println();
59+
//queue empty
60+
if (q.isEmpty()) {
61+
break;
62+
} else {
63+
q.add(null);
64+
}
65+
} else {
66+
System.out.print(curr.getValue() + " ");
67+
if (curr.getLeft() != null) {
68+
q.add(curr.getLeft());
69+
}
70+
if (curr.getRight() != null) {
71+
q.add(curr.getRight());
72+
}
73+
}
74+
}
75+
}
76+
77+
4678
public static void main(String[] args) {
47-
Scanner scanner = new Scanner(System.in);
4879
BinarySearchTreeTraversal binarySearchTreeTraversal = new BinarySearchTreeTraversal();
80+
81+
//buildTreeAndTraversalApproach1(binarySearchTreeTraversal);
82+
83+
buildTreeAndTraversalApproach2(binarySearchTreeTraversal);
84+
85+
}
86+
87+
private static void buildTreeAndTraversalApproach2(BinarySearchTreeTraversal binarySearchTreeTraversal) {
88+
int[] nodes = {1, 2, 4, -1, -1, 5, -1, -1, 3, -1, 6, -1, -1};
89+
90+
Node root = binarySearchTreeTraversal.buildPreOrderTree(nodes);
91+
System.out.println(root.getValue());
92+
binarySearchTreeTraversal.display(root);
93+
levelOrder(root);
94+
}
95+
96+
private static void buildTreeAndTraversalApproach1(BinarySearchTreeTraversal binarySearchTreeTraversal) {
97+
Scanner scanner = new Scanner(System.in);
98+
4999
binarySearchTreeTraversal.populate(scanner);
50100
System.out.println("Tree values in structured format:");
51101
binarySearchTreeTraversal.display();

src/main/java/dsa/trees/BinaryTree.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
public class BinaryTree {
66

77
private Node root;
8+
static private int idx = -1;
89

910
public static class Node {
1011
private int value;
@@ -77,6 +78,21 @@ private void populate(Scanner scanner, Node node) {
7778
}
7879
}
7980

81+
public Node buildPreOrderTree(int[] nodes) {
82+
idx++;
83+
if (nodes[idx] == -1) {
84+
return null;
85+
}
86+
Node newNode = new Node(nodes[idx]);
87+
newNode.left = buildPreOrderTree(nodes);
88+
newNode.right = buildPreOrderTree(nodes);
89+
return newNode;
90+
}
91+
92+
public void display(Node root) {
93+
display(root, "Root Node: ");
94+
}
95+
8096
public void display() {
8197
display(this.root, "Root Node: ");
8298
}

0 commit comments

Comments
 (0)