finished s05 ex2

This commit is contained in:
navid.sassan 2020-10-25 21:04:45 +01:00
parent 22949cd970
commit 8daced1696
3 changed files with 53 additions and 5 deletions

View File

@ -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() {

View File

@ -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);
}
}
}

View File

@ -60,4 +60,4 @@ class MyVisitor<T> implements Visitor<T> {
public String toString() {
return output.toString();
}
}
}