树的遍历

前序遍历

Pre-order Traversal 前序遍历先访问根节点,再访问左节点,最后访问右节点。
树的遍历

Given a binary tree, return the preorder traversal of its nodes’ values.
Example:

Input: [1,null,2,3]
  1
    \
      2
      /
    3
Output: [1,2,3]

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x){
        val = x;
    }
}

public class Solution {
    
    private List<Integer> nodes = new ArrayList<>();
    
    public List<Integer> preorderTraversal(TreeNode root) {
        if (root == null) {
            return null;
        }

        nodes.add(root.val);
        if (root.left != null) {
            this.preorderTraversal(root.left);
        } else if (root.right != null) {
            this.preorderTraversal(root.right);
        }
        return nodes;
    }
    
    public static void main(String[] args){
        Solution preOrder = new Solution();
        TreeNode root = new TreeNode(1);
        TreeNode right = new TreeNode(2);
        right.left = new TreeNode(3);
        root.right = right;
        List<Integer> nodes = preOrder.preorderTraversal(root);
        nodes.stream().forEach(node -> {
            System.out.print(node);
        });
    }
}

中序遍历

In-order Traversal 中序遍历先访问左节点,再访问根节点,最后访问右节点。树的遍历

后序遍历

Post-order Traversal 后序遍历先访问左节点,再访问右节点,最后访问根节点。
树的遍历