用Deque和linkedList代替stack
上一篇文章是递归的方法:
点击跳转递归方法
本文是迭代的方法
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
class Solution {
public List<Integer> inorderTraversal(final TreeNode root) {
final List<Integer> res = new ArrayList<>();
final Deque<TreeNode> stack = new LinkedList<>();
TreeNode p = root;
while (stack.size() != 0 || p != null) {
while (null != p) {
stack.addLast(p);
p = p.left;
}
p = stack.removeFirst();
res.add(p.val);
p = p.right;
}
return res;
}
}
stack.addLast 是因为 要模仿栈, 是向栈顶加元素。 所以这里不要混淆, 栈是后进先出, 栈顶是stack[0]