1. 先附上LeetCode题链接
144. 二叉树的前序遍历
94. 二叉树的中序遍历
145. 二叉树的后序遍历
2. 采用递归 和 迭代两种方式进行遍历
2.1 前序遍历
2.1.1 递归方法
/********************** 递归 ***********************/
public List<Integer> preorderTraversal(TreeNode root) {
if (root == null) return new ArrayList<>();
dfs(root);
return res;
}
List<Integer> res = new ArrayList<>();
public void dfs(TreeNode root) {
// base case
if (root == null) return;
res.add(root.val); // 添加当前节点值
dfs(root.left); // 递归左子树
dfs(root.right); // 递归右子树
}
2.1.2 迭代方法
/********************** 迭代1 ***********************/
public List<Integer> preorderTraversal(TreeNode root) {
// base case
if (root == null) return new ArrayList<>();
List<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>(