Binary Tree Preorder Traversal
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Solution { 2 public ArrayList<Integer> preorderTraversal(TreeNode root) { 3 ArrayList<Integer> res = new ArrayList<Integer>(); 4 if(root==null) return res; 5 TreeNode cur = root; 6 Stack<TreeNode>stack = new Stack<TreeNode>(); 7 while(!stack.isEmpty() || cur!=null){ 8 if(cur!=null){ 9 res.add(cur.val); 10 stack.push(cur); 11 cur = cur.left; 12 } 13 else{ 14 cur = stack.pop(); 15 cur = cur.right; 16 } 17 } 18 return res; 19 } 20 }