遍历二叉树的迭代实现
先序遍历:根-左-右
实现思路:使用栈。由于栈是后进先出,所以push的顺序为右-左。
- 首先入栈root
- node = 出栈,记录当前值
- 入栈node.right
- 入栈node.left
- 重复2-4,直到栈空
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
if (root == null) {
return list;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
list.add(node.val);
if (node.right != null) {
stack.push(node.right);
}
if (node.left != null) {
stack.push(node.left);
}
}
return list;