题目链接144. 二叉树的前序遍历
递归:
class Solution { List<Integer> res = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { if (root == null) return res; dfs(root); return res; } public void dfs(TreeNode root){ if (root == null) return; res.add(root.val); dfs(root.left); dfs(root.right); } }
迭代:
只要有递归,就可以用栈实现。 前序遍历,中左右。
class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); Deque<TreeNode> deque = new LinkedList<>(); while (root != null || !deque.isEmpty()){ while (root != null){ res.add(root.val); deque.add(root); root = root.left; } root = deque.pollLast().right; } return res; } }