Skip to content

Commit 28dc702

Browse files
edit 144
1 parent 615ff78 commit 28dc702

File tree

1 file changed

+10
-21
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+10
-21
lines changed

src/main/java/com/fishercoder/solutions/_144.java

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import com.fishercoder.common.classes.TreeNode;
44

5-
import java.util.ArrayList;
6-
import java.util.List;
7-
import java.util.Stack;
5+
import java.util.*;
86

9-
/**Given a binary tree, return the preorder traversal of its nodes' values.
7+
/**
8+
* 144. Binary Tree Preorder Traversal
9+
* Given a binary tree, return the preorder traversal of its nodes' values.
1010
1111
For example:
1212
Given binary tree {1,#,2,3},
@@ -20,21 +20,24 @@
2020
Note: Recursive solution is trivial, could you do it iteratively?*/
2121

2222
public class _144 {
23-
public List<Integer> preorderTraversal_iterative_original(TreeNode root) {
23+
24+
public List<Integer> preorderTraversal_iterative(TreeNode root) {
2425
List<Integer> list = new ArrayList();
25-
Stack<TreeNode> stack = new Stack();
2626
if(root == null) return list;
27+
Deque<TreeNode> stack = new ArrayDeque<>();
2728
stack.push(root);
2829
while(!stack.isEmpty()){
2930
TreeNode curr = stack.pop();
3031
list.add(curr.val);
32+
/**We push right nodes onto the stack first, since they'll be popped out later than
33+
* the left nodes, to meet the preorder: root -> left -> right. */
3134
if(curr.right != null) stack.push(curr.right);
3235
if(curr.left != null) stack.push(curr.left);
3336
}
3437
return list;
3538
}
3639

37-
public List<Integer> preorderTraversal_recursive_1(TreeNode root) {
40+
public List<Integer> preorderTraversal_recursive(TreeNode root) {
3841
List<Integer> list = new ArrayList();
3942
return pre(root, list);
4043
}
@@ -47,18 +50,4 @@ List<Integer> pre(TreeNode root, List<Integer> list){
4750
return list;
4851
}
4952

50-
51-
public List<Integer> preorderTraversal_recursive_2(TreeNode root) {
52-
List<Integer> result = new ArrayList();
53-
if (root != null) dfs(root, result);
54-
return result;
55-
}
56-
57-
private void dfs(TreeNode root, List<Integer> result){
58-
result.add(root.val);
59-
if (root.left != null) dfs(root.left, result);
60-
if (root.right != null) dfs(root.right, result);
61-
}
62-
63-
6453
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy