144. Binary Tree Preorder Traversal

public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> results = new ArrayList<Integer>();
        if(root == null)
            return results;
        
        Deque<TreeNode> unprocessed = new ArrayDeque<TreeNode>();
        TreeNode current = root;
        
        while(current != null || !unprocessed.isEmpty())
        {
            if(current == null)
                current = unprocessed.pop();
                
            results.add(current.val);
            if(current.right!=null)
                unprocessed.push(current.right);
            current = current.left;
            
        }
        return results;
    }

 

posted @ 2015-09-21 03:20  新一代的天皇巨星  阅读(123)  评论(0)    收藏  举报