Skip to content

Commit 3304708

Browse files
author
Prashant Jain
committed
Added all binary tree traversal
1 parent 8eb5779 commit 3304708

5 files changed

Lines changed: 131 additions & 1 deletion

File tree

src/in/knowledgegate/dsa/binarytree/InorderTraversalIterative.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/**
1010
* Write Inorder traversal of a binary tree using
11-
* recursive approach
11+
* iterative approach
1212
*/
1313
public class InorderTraversalIterative {
1414
public List<Integer> inorderTraversal(TreeNode root) {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package in.knowledgegate.dsa.binarytree;
2+
3+
import in.knowledgegate.dsa.binarytree.model.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
import java.util.Stack;
8+
9+
/**
10+
* Write Postorder traversal of a binary tree
11+
* using iterative approach
12+
*/
13+
public class PostorderTraversalIterative {
14+
public List<Integer> iterativePostorder(TreeNode root) {
15+
List<Integer> result = new ArrayList<>();
16+
if (root == null) {
17+
return result;
18+
}
19+
20+
Stack<TreeNode> s1 = new Stack<>();
21+
Stack<TreeNode> s2 = new Stack<>();
22+
s1.push(root);
23+
24+
while (!s1.isEmpty()) {
25+
TreeNode temp = s1.pop();
26+
s2.push(temp);
27+
28+
if (temp.left != null) {
29+
s1.push(temp.left);
30+
}
31+
if (temp.right != null) {
32+
s1.push(temp.right);
33+
}
34+
}
35+
36+
while (!s2.isEmpty()) {
37+
result.add(s2.pop().val);
38+
}
39+
40+
return result;
41+
}
42+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package in.knowledgegate.dsa.binarytree;
2+
3+
import in.knowledgegate.dsa.binarytree.model.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
/**
9+
* Write Postorder traversal of a binary tree
10+
* using recursive approach
11+
*/
12+
public class PostorderTraversalRecursive {
13+
public List<Integer> postorderTraversal(TreeNode root) {
14+
List<Integer> list = new ArrayList<>();
15+
postorderTraversal(root, list);
16+
return list;
17+
}
18+
19+
private void postorderTraversal(TreeNode root,
20+
List<Integer> result) {
21+
if (root == null) return;
22+
postorderTraversal(root.left, result);
23+
postorderTraversal(root.right, result);
24+
result.add(root.val);
25+
}
26+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package in.knowledgegate.dsa.binarytree;
2+
3+
import in.knowledgegate.dsa.binarytree.model.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
import java.util.Stack;
8+
9+
/**
10+
* Write Preorder traversal of a binary tree using
11+
* iterative approach
12+
*/
13+
public class PreorderTraversalIterative {
14+
public List<Integer> iterativePreorder(TreeNode root) {
15+
List<Integer> result = new ArrayList<>();
16+
if (root == null) {
17+
return result;
18+
}
19+
20+
Stack<TreeNode> stack = new Stack<>();
21+
stack.push(root);
22+
while (!stack.isEmpty()) {
23+
TreeNode temp = stack.pop();
24+
result.add(temp.val);
25+
26+
if (temp.right != null) {
27+
stack.push(temp.right);
28+
}
29+
if (temp.left != null) {
30+
stack.push(temp.left);
31+
}
32+
}
33+
34+
return result;
35+
}
36+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package in.knowledgegate.dsa.binarytree;
2+
3+
import in.knowledgegate.dsa.binarytree.model.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
/**
9+
* Write Preorder traversal of a binary tree using
10+
* recursive approach
11+
*/
12+
public class PreorderTraversalRecursive {
13+
public List<Integer> preorderTraversal(TreeNode root) {
14+
List<Integer> result = new ArrayList<>();
15+
preorderTraversal(root, result);
16+
return result;
17+
}
18+
19+
public void preorderTraversal(TreeNode root,
20+
List<Integer> result) {
21+
if (root == null) return;
22+
result.add(root.val);
23+
preorderTraversal(root.left, result);
24+
preorderTraversal(root.right, result);
25+
}
26+
}

0 commit comments

Comments
 (0)