22
33import 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},
2020 Note: Recursive solution is trivial, could you do it iteratively?*/
2121
2222public 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