-
-
Notifications
You must be signed in to change notification settings - Fork 155
Expand file tree
/
Copy pathTreeNode.java
More file actions
154 lines (115 loc) · 3.29 KB
/
Copy pathTreeNode.java
File metadata and controls
154 lines (115 loc) · 3.29 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package util;
import java.util.LinkedList;
import java.util.Queue;
/**
* Definition for a binary tree node.
*/
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int x) {
val = x;
left = null;
right = null;
}
public static void inOrderTraversal(TreeNode root) {
// Terminating condition
if (root == null)
return;
// Traverse the left node
inOrderTraversal(root.left);
// Print the root node
System.out.print(root.val + " -> ");
// Go to the right node
inOrderTraversal(root.right);
}
public static void preOrderTraversal(TreeNode root) {
// Terminating condition
if (root == null)
return;
// Print the root node
System.out.print(root.val + " -> ");
// Traverse the left node
preOrderTraversal(root.left);
// Go to the right node
preOrderTraversal(root.right);
}
public static void postOrderTraversal(TreeNode root) {
// Terminating condition
if (root == null)
return;
// Traverse the left node
postOrderTraversal(root.left);
// Go to the right node
postOrderTraversal(root.right);
// Print the root node
System.out.print(root.val + " -> ");
}
public static void levelOrderTraversal(TreeNode root) {
Queue<TreeNode> treeNodeQueue = new LinkedList<>();
// Start with the first/root node
treeNodeQueue.add(root);
// Run a loop till this queue is not empty
while (!treeNodeQueue.isEmpty()) {
TreeNode treeNode = treeNodeQueue.poll();
// Print the value
System.out.print(treeNode.val + " -> ");
// Add left child to queue
if (treeNode.left != null)
treeNodeQueue.add(treeNode.left);
// Add right child to queue
if (treeNode.right != null)
treeNodeQueue.add(treeNode.right);
}
}
public static void main(String[] args) {
// Creating a tree that looks like
// 2
TreeNode root = new TreeNode(2);
// Adding left and right child
// 2
// / \
// 8 4
root.left = new TreeNode(8);
root.right = new TreeNode(4);
TreeNode leftNode = root.left;
TreeNode rightNode = root.right;
// Adding more child to left node
// 2
// / \
// 8 4
// / \
// 3 7
leftNode.left = new TreeNode(3);
leftNode.right = new TreeNode(7);
// Adding child to right node
// 2
// / \
// 8 4
// / \ \
// 3 7 1
rightNode.right = new TreeNode(1);
// Adding child to child of right node
// 2
// / \
// 8 4
// / \ \
// 3 7 1
// /
// 6
rightNode.right.left = new TreeNode(6);
// Will print 2
System.out.println(root.val);
// Will print 6
System.out.println(root.right.right.left.val);
System.out.println("\nIn-order traversal: ");
inOrderTraversal(root);
System.out.println("\nPre-order traversal: ");
preOrderTraversal(root);
System.out.println("\nPost-order traversal: ");
postOrderTraversal(root);
System.out.println("\nLevel order traversal: ");
levelOrderTraversal(root);
}
}