Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes' values.

Example

Given:

    1
   / \
  2   3
 / \
4   5

return [1,2,4,5,3].

 

without using recursion.

 1 /**
 2  * Definition of TreeNode:
 3  * public class TreeNode {
 4  *     public int val;
 5  *     public TreeNode left, right;
 6  *     public TreeNode(int val) {
 7  *         this.val = val;
 8  *         this.left = this.right = null;
 9  *     }
10  * }
11  */
12 public class Solution {
13     /**
14      * @param root: The root of binary tree.
15      * @return: Preorder in ArrayList which contains node values.
16      */
17     public ArrayList<Integer> preorderTraversal(TreeNode root) {
18         // write your code here
19         ArrayList<Integer> results = new ArrayList<>();
20         if (root == null) {
21             return results;
22         }
23         Stack<TreeNode> stack = new Stack<>();
24         stack.push(root);
25         while (!stack.isEmpty()) {
26             TreeNode node = stack.pop();
27             results.add(node.val);
28             if (node.right != null) {
29                 stack.push(node.right);
30             }
31             if (node.left != null) {
32                 stack.push(node.left);
33             }
34         }
35         return results;
36     }
37 }

 

posted @ 2017-07-25 10:45  YuriFLAG  阅读(90)  评论(0)    收藏  举报