package ch.zhaw.ads; import java.util.*; public class TreeTraversal> implements Traversal { private TreeNode root; public TreeTraversal(TreeNode root) { this.root = root; } private void inorder(TreeNode node, Visitor vis) { if (node != null) { inorder(node.left, vis); vis.visit(node.element); inorder(node.right, vis); } } public void inorder(Visitor vis) { inorder(root, vis); } private void preorder(TreeNode node, Visitor vis) { if (node != null) { vis.visit(node.element); preorder(node.left, vis); preorder(node.right, vis); } } public void preorder(Visitor vis) { preorder(root, vis); } private void postorder(TreeNode node, Visitor vis) { if (node != null) { postorder(node.left, vis); postorder(node.right, vis); vis.visit(node.element); } } public void postorder(Visitor vis) { postorder(root, vis); } void levelorder(TreeNode node, Visitor visitor) { Queue> q = new LinkedList>(); if (node != null) { q.add(node); } while (!q.isEmpty()) { node = q.remove(); visitor.visit(node.element); if (node.left != null) { q.add(node.left); } if (node.right != null) { q.add(node.right); } } } public void levelorder(Visitor vis) { levelorder(root,vis); } }