Advertisement
Guest User

144. Binary Tree Preorder Traversal |Time:O(n)|Space:O(1)

a guest
Aug 21st, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.67 KB | None | 0 0
  1. import java.util.List;
  2. import java.util.ArrayList;
  3. import java.util.Stack;
  4.  
  5. // Problem: https://leetcode.com/problems/binary-tree-preorder-traversal/
  6. // Solution adapted from: https://www.youtube.com/watch?v=elQcrJrfObg
  7. // Solution adapted from: https://www.programcreek.com/2012/12/leetcode-solution-for-binary-tree-preorder-traversal-in-java/
  8.  
  9. public class PreorderIterative {
  10.  
  11.     public static class TreeNode {
  12.         int val;
  13.         TreeNode left;
  14.         TreeNode right;
  15.         TreeNode(int x) { val = x; }
  16.     }
  17.  
  18.     public static List<Integer> preorderIterativeTraversal(TreeNode root) {
  19.         List<Integer> result = new ArrayList<>();
  20.        
  21.         if (root == null) {
  22.             return result;
  23.         }
  24.        
  25.         Stack<TreeNode> stack = new Stack<>();
  26.         stack.push(root);
  27.        
  28.         while(!stack.isEmpty()) {
  29.             TreeNode node = stack.pop();
  30.            
  31.             result.add(node.val);
  32.            
  33.             if(node.right != null) {
  34.                 stack.push(node.right);
  35.             }
  36.            
  37.             if(node.left != null) {
  38.                 stack.push(node.left);
  39.             }
  40.         }
  41.        
  42.         return result;
  43.     }
  44.  
  45.     public static void main(String args[]){
  46.        
  47.         TreeNode root = new TreeNode(10);
  48.         root.left = new TreeNode(8);
  49.         root.right = new TreeNode(2);
  50.         root.left.left = new TreeNode(3);
  51.         root.left.right = new TreeNode(5);
  52.         root.left.right.left = new TreeNode(2);
  53.  
  54.         List<Integer> result = preorderIterativeTraversal(root);
  55.         System.out.println(result.toString());
  56.         // Expected output: 10 8 3 5 2 2
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement