package algoexpert.medium; import java.util.ArrayList; /* PROBLEM: Traverse BST - inorder - preorder - postorder time : O(n) | space : O(n) */ public class BSTTraverse { static class BST { public int value; public BST left; public BST right; public BST(int value) { this.value = value; } } public static ArrayList inOrderTraverse(BST tree, ArrayList array) { // LnR if (tree != null) { inOrderTraverse(tree.left, array); array.add(tree.value); inOrderTraverse(tree.right, array); } return array; } public static ArrayList preOrderTraverse(BST tree, ArrayList array) { // nLR if (tree != null) { array.add(tree.value); preOrderTraverse(tree.left, array); preOrderTraverse(tree.right, array); } return array; } public static ArrayList postOrderTraverse(BST tree, ArrayList array) { // LRn if (tree != null) { postOrderTraverse(tree.left, array); postOrderTraverse(tree.right, array); array.add(tree.value); } return array; } }