题目描述
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
lc
实现-递归
List<Integer> res = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
traversal(root);
return res;
}
public void traversal(TreeNode root) {
if (root == null) return;
res.add(root.val);
traversal(root.left);
traversal(root.right);
}
实现-迭代
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
if (root == null) {
return res;
}
Deque<TreeNode> stack = new LinkedList<TreeNode>();
TreeNode node = root;
while (!stack.isEmpty() || node != null) {
while (node != null) {
res.add(node.val);
stack.push(node);
node = node.left;
}
node = stack.pop();
node = node.right;
}
return res;
}
}
// https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/er-cha-shu-de-qian-xu-bian-li-by-leetcode-solution/