赞
踩
题目链接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;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。