package com.aaront.exercise.generic; import java.util.Arrays; import java.util.List; public class BinaryTreeUtil { /** * 用递归的方式实现对二叉树的前序遍历, 需要通过BinaryTreeUtilTest测试 * * @param root * @return */ public static <T extends Comparable<T>> List<T> preOrderVisit(GenericBinaryTree<T> root) { T[] result = root.traversal(GenericBinaryTree.PREORDER, (T[]) new Integer[0]); return Arrays.asList(result); } /** * 用递归的方式实现对二叉树的中遍历 * * @param root * @return */ public static <T extends Comparable<T>> List<T> inOrderVisit(GenericBinaryTree<T> root) { T[] result = root.traversal(GenericBinaryTree.INORDER, (T[]) new Integer[0]); return Arrays.asList(result); } /** * 用递归的方式实现对二叉树的后遍历 * * @param root * @return */ public static <T extends Comparable<T>> List<T> postOrderVisit(GenericBinaryTree<T> root) { T[] result = root.traversal(GenericBinaryTree.POSTORDER, (T[]) new Integer[0]); return Arrays.asList(result); } /** * 用非递归的方式实现对二叉树的前序遍历 * * @param root * @return */ public static <T extends Comparable<T>> List<T> preOrderWithoutRecursion(GenericBinaryTree<T> root) { List<T> result = root.traversalWithoutRecursion(GenericBinaryTree.PREORDER); return result; } /** * 用非递归的方式实现对二叉树的中序遍历 * * @param root * @return */ public static <T extends Comparable<T>> List<T> inOrderWithoutRecursion(GenericBinaryTree<T> root) { List<T> result = root.traversalWithoutRecursion(GenericBinaryTree.INORDER); return result; } }