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() { public Traversal<T> traversal() {
// to be implemented return new TreeTraversal<T>(root);
} }
protected int calcHeight(TreeNode<T> node) { protected int calcHeight(TreeNode<T> node) {
// to be implemented // to be implemented
return 0;
} }
protected int calcSize(TreeNode p) { protected int calcSize(TreeNode p) {
// to be implemented // to be implemented
return 0;
} }
public int height() { public int height() {

View File

@ -1,5 +1,8 @@
package ch.zhaw.ads; package ch.zhaw.ads;
import java.util.LinkedList;
import java.util.Queue;
public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> { public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> {
private TreeNode<T> root; private TreeNode<T> root;
@ -8,16 +11,59 @@ public class TreeTraversal<T extends Comparable<T>> implements Traversal<T> {
this.root = root; this.root = root;
} }
@Override
public void inorder(Visitor<T> vis) { 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) { 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) { 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() { public String toString() {
return output.toString(); return output.toString();
} }
} }