/* * 144. Binary Tree Preorder Traversal * 2016.5.25 By Mingyang * 典型的dfs的做法,每次push进去一个值的时候就记在小本本上,其实也就是记在list里面 * 两种方法都已经尝试了 */ public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res=new ArrayList<Integer>(); if(root==null) return res; Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode p=root; while(stack.size()!=0||p!=null){ if(p!=null){ stack.push(p); res.add(p.val); p=p.left; }else{ TreeNode q=stack.pop(); p=q.right; } } return res; } public List<Integer> preorderTraversal1(TreeNode root) { List<Integer> res=new ArrayList<Integer>(); dfs(res,root); return res; } public void dfs(List<Integer> res,TreeNode root){ if(root==null) return; res.add(root.val); dfs(res,root.left); dfs(res,root.right); }