题目描述
题目链接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;
}
}