Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.List;
- import java.util.ArrayList;
- import java.util.Stack;
- // Problem: https://leetcode.com/problems/binary-tree-inorder-traversal/
- // Solution adapted from: https://www.youtube.com/watch?v=nzmtCFNae9k
- // Solution adapted from: https://www.programcreek.com/2012/12/leetcode-solution-of-binary-tree-inorder-traversal-in-java/
- public class PostorderIterative {
- public static class TreeNode {
- int val;
- TreeNode left;
- TreeNode right;
- TreeNode(int x) { val = x; }
- }
- public static List<Integer> postorderIterativeTraversal(TreeNode root) {
- List<Integer> result = new ArrayList<>();
- Stack<TreeNode> stack1 = new Stack<>();
- Stack<TreeNode> stack2 = new Stack<>();
- if (root == null) {
- return result;
- }
- stack1.add(root);
- while(!stack1.isEmpty()) {
- TreeNode node = stack1.pop();
- stack2.push(node);
- if(node.left != null) {
- stack1.push(node.left);
- }
- if(node.right != null) {
- stack1.push(node.right);
- }
- }
- while(!stack2.isEmpty()) {
- TreeNode node = stack2.pop();
- result.add(node.val);
- }
- return result;
- }
- public static void main(String args[]){
- TreeNode root = new TreeNode(10);
- root.left = new TreeNode(8);
- root.right = new TreeNode(2);
- root.left.left = new TreeNode(3);
- root.left.right = new TreeNode(5);
- root.right.left = new TreeNode(7);
- List<Integer> result = postorderIterativeTraversal(root);
- System.out.println(result.toString());
- // Expected output: 3 5 8 7 2 10
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement