题目链接: 144.二叉树的前序遍历
💻
二叉树中前中后都代表的是中间节点的位置
前序遍历:中左右 (先遍历中间节点,再遍历左右节点)
中序遍历:左中右 (先遍历左节点再遍历中间节点,再遍历右节点)
后序遍历:左右中 (先遍历左右节点,再遍历中间节点)
代码中加入集合的那个代码根据中间节点的位置决定
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
//二叉树的前序遍历
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> preorderTraversal(TreeNode root) {
//结束递归的条件
if(root == null) return list;
list.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return list;
}
}
//二叉树的中序遍历
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> inorderTraversal(TreeNode root) {
if(root == null) return list;
inorderTraversal(root.left);
list.add(root.val);
inorderTraversal(root.right);
return list;
}
}
//二叉树的后序遍历
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> postorderTraversal(TreeNode root) {
if(root == null) return list;
postorderTraversal(root.left);
postorderTraversal(root.right);
list.add(root.val);
return list;
}
}