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() {
|
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() {
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -60,4 +60,4 @@ class MyVisitor<T> implements Visitor<T> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return output.toString();
|
return output.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user