144. Binary Tree Preorder Traversal

这个题我的笔记里怎么没有记录。。。

至少是三刷了吧。

Recursively就不说了。。

Iteratively就是用Stack模拟recursion里的memory stack的顺序。

Time : O(n)
Space : O(n)

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        
        List<Integer> res = new ArrayList<>();
        
        Stack<TreeNode> stk = new Stack<>();
        
        TreeNode temp = root;
        while (!stk.isEmpty() || temp != null) {
            while (temp != null) {
                res.add(temp.val);
                stk.push(temp);
                temp = temp.left;
            }
            
            temp = stk.pop();
            temp = temp.right;
        }
        
        return res;
    }
}
原文地址:https://www.cnblogs.com/reboot329/p/6096451.html