From c32c20d23f8c6a1156013ffed4f2620fb90ba844 Mon Sep 17 00:00:00 2001 From: alpha19976 Date: Fri, 2 Nov 2018 19:06:03 +0800 Subject: [PATCH] Create f.java --- f.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 f.java diff --git a/f.java b/f.java new file mode 100644 index 0000000..3fc09ac --- /dev/null +++ b/f.java @@ -0,0 +1,51 @@ +Pre Order Traverse +public List preorderTraversal(TreeNode root) { + List result = new ArrayList<>(); + Deque stack = new ArrayDeque<>(); + TreeNode p = root; + while(!stack.isEmpty() || p != null) { + if(p != null) { + stack.push(p); + result.add(p.val); // Add before going to children + p = p.left; + } else { + TreeNode node = stack.pop(); + p = node.right; + } + } + return result; +} +In Order Traverse +public List inorderTraversal(TreeNode root) { + List result = new ArrayList<>(); + Deque stack = new ArrayDeque<>(); + TreeNode p = root; + while(!stack.isEmpty() || p != null) { + if(p != null) { + stack.push(p); + p = p.left; + } else { + TreeNode node = stack.pop(); + result.add(node.val); // Add after all left children + p = node.right; + } + } + return result; +} +Post Order Traverse +public List postorderTraversal(TreeNode root) { + LinkedList result = new LinkedList<>(); + Deque stack = new ArrayDeque<>(); + TreeNode p = root; + while(!stack.isEmpty() || p != null) { + if(p != null) { + stack.push(p); + result.addFirst(p.val); // Reverse the process of preorder + p = p.right; // Reverse the process of preorder + } else { + TreeNode node = stack.pop(); + p = node.left; // Reverse the process of preorder + } + } + return result; +}