题目
给你二叉树的根节点 root ,返回它节点值的 前序 **遍历。
示例 1:
输入: root = [1,null,2,3]
输出: [1,2,3]
题解
方式一:递归
List<Integer> result = new LinkedList<>();
public List<Integer> preorderTraversal(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
result.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return result;
}
方式二:迭代
public List<Integer> preorderTraversal(TreeNode root) {
if (root == null) return new ArrayList<>();
List<Integer> result = new LinkedList<>();
Stack<TreeNode> stack = new Stack<>();
while (root != null || !stack.isEmpty()) {
while (root != null) {
stack.push(root);
result.add(root.val);
root = root.left;
}
root = stack.pop();
root = root.right;
}
return result;
}
总结
算法:递归、迭代