二叉树的遍历

前序遍历

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public List<Integer> ans = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root){
  preorder(root);
  return ans;
}

public void preorder(TreeNode node) {
  if(node == null) return;
  ans.add(node.val);
  preorder(node.left);
  preorder(node.right);
}

中序遍历

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public List<Integer> ans = new ArrayList<>();
public List<Integer> inorderTraversal(TreeNode root){
  inorder(root);
  return ans;
}

public void inorder(TreeNode node) {
  if(node == null) return;
  inorder(node.left);
  ans.add(node.val);
  inorder(node.right);
}

后序遍历

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public List<Integer> ans = new ArrayList<>();
public List<Integer> postorderTraversal(TreeNode root){
  postorder(root);
  return ans;
}

public void postorder(TreeNode node) {
  if(node == null) return;
  postorder(node.left);
  postorder(node.right);
  ans.add(node.val);
}