finished s05 ex2
This commit is contained in:
parent
22949cd970
commit
8daced1696
@ -71,16 +71,18 @@ public class SortedBinaryTree<T extends Comparable<T>> implements Tree<T> {
|
||||
}
|
||||
|
||||
public Traversal<T> traversal() {
|
||||
// to be implemented
|
||||
return new TreeTraversal<T>(root);
|
||||
}
|
||||
|
||||
protected int calcHeight(TreeNode<T> node) {
|
||||
// to be implemented
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
protected int calcSize(TreeNode p) {
|
||||
// to be implemented
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int height() {
|
||||
|
@ -1,5 +1,8 @@
|
||||
package ch.zhaw.ads;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> {
|
||||
|
||||
private TreeNode<T> root;
|
||||
@ -8,16 +11,59 @@ public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> {
|
||||
this.root = root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inorder(Visitor<T> vis) {
|
||||
// to be done
|
||||
inorder(root, vis);
|
||||
}
|
||||
|
||||
private void inorder(TreeNode<T> node, Visitor<T> visitor) {
|
||||
if (node != null) {
|
||||
inorder(node.left, visitor);
|
||||
visitor.visit(node.element);
|
||||
inorder(node.right, visitor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preorder(Visitor<T> vis) {
|
||||
// to be done
|
||||
preorder(root, vis);
|
||||
}
|
||||
|
||||
private void preorder(TreeNode<T> node, Visitor<T> visitor) {
|
||||
if (node != null) {
|
||||
visitor.visit(node.element);
|
||||
preorder(node.left, visitor);
|
||||
preorder(node.right, visitor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postorder(Visitor<T> vis) {
|
||||
// to be done
|
||||
postorder(root, vis);
|
||||
}
|
||||
|
||||
private void postorder(TreeNode<T> node, Visitor<T> visitor) {
|
||||
if (node != null) {
|
||||
postorder(node.left, visitor);
|
||||
postorder(node.right, visitor);
|
||||
visitor.visit(node.element);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void levelorder(Visitor<T> vis) {
|
||||
levelorder(root, vis);
|
||||
}
|
||||
|
||||
void levelorder(TreeNode<T> node, Visitor<T> visitor) {
|
||||
Queue<TreeNode<T>> q = new LinkedList<TreeNode<T>>();
|
||||
if (node != null) q.offer(node);
|
||||
while (!q.isEmpty()){
|
||||
node = q.remove();
|
||||
visitor.visit(node.element);
|
||||
if (node.left !=null) q.offer(node.left);
|
||||
if (node.right != null) q.offer(node.right);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -60,4 +60,4 @@ class MyVisitor<T> implements Visitor<T> {
|
||||
public String toString() {
|
||||
return output.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user