-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBinaryTree.java
More file actions
101 lines (100 loc) · 3.3 KB
/
Copy pathBinaryTree.java
File metadata and controls
101 lines (100 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import java.util.Scanner;
public class BinaryTree {
public BinaryTree(){}
private static class Node{
int value;
Node left;
Node right;
public Node(int value){
this.value=value;
}}
private Node root;
public void populate(Scanner sc){
System.out.print("Enter the root node: ");
int value=sc.nextInt();
root=new Node(value);
populate(sc, root);
}
private void populate(Scanner sc, Node node){
while(true){
System.out.println("Currently at node: " + node.value);
System.out.println("Press 'l' to insert to left, 'r' to insert to right & 'x' to stop inserting here: ");
char ch=sc.next().charAt(0);
if(ch=='l'){
if(node.left==null){
System.out.println("Enter the value of the left of "+ node.value + ":");
int value=sc.nextInt();
node.left=new Node(value);
populate(sc, node.left);
} else{
System.out.println("Left child of "+node.value+" already exists.");
}}
else if(ch=='r'){
if(node.right==null){
System.out.println("Enter the value of the right of "+node.value);
int value=sc.nextInt();
node.right=new Node(value);
populate(sc, node.right);
} else{
System.out.println("Right child of "+node.value+" already exists.");
}}
else if(ch=='x'){ return; }
else{
System.out.println("Invalid input");
}}}
public void display(){
System.out.println("The tree is: ");
display(root,0);
System.out.println("Pre-Order traversal of the tree is: ");
preOrder();
System.out.println("\nIn-Order traversal of the tree is: ");
inOrder();
System.out.println("\nPost-Order traversal of the tree is: ");
postOrder();
}
private void display(Node node, int level) {
if (node == null) return;
display(node.right, level + 1);
if (level != 0) {
for (int i = 0; i < level-1; i++) {
System.out.print("|\t\t");
}
System.out.println("|---->" + node.value);
} else {
System.out.println(node.value);
}
display(node.left, level + 1);
}
public void preOrder(){
preOrder(root);
}
private void preOrder(Node node){
if (node == null) return;
System.out.print(node.value + " ");
preOrder(node.left);
preOrder(node.right);
}
public void inOrder(){
inOrder(root);
}
private void inOrder(Node node){
if (node == null) return;
inOrder(node.left);
System.out.print(node.value + " ");
inOrder(node.right);
}
public void postOrder(){
postOrder(root);
}
private void postOrder(Node node){
if (node == null) return;
postOrder(node.left);
postOrder(node.right);
System.out.print(node.value + " ");
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BinaryTree tree=new BinaryTree();
tree.populate(sc);
tree.display();
}}