AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
IterativePreorderTraversal.java
Go to the documentation of this file.
1package aud.example;
2
3import aud.util.*;
4import aud.BinaryTree;
5
18
20 public static
22 indent(level);
23 System.err.println("enter with node="+node);
24 if (node!=null) {
25 System.out.println("output "+node);
26 recursive_traversal(node.getLeft(),level+1);
27 recursive_traversal(node.getRight(),level+1);
28 }
29 indent(level);
30 System.err.println("leave with node="+node);
31 }
32
34 public static void iterative_traversal(BinaryTree<String> root) {
37 stack.push(root); // initialize
38
39 while(!stack.is_empty()) {
40 BinaryTree<String> node=stack.pop();
41 if (node!=null) {
42 System.out.println("output "+node);
43 stack.push(node.getRight()); // mind order: right first
44 stack.push(node.getLeft());
45 }
46 }
47 }
48
50 public static void level_order_traversal(BinaryTree<String> root) {
53 queue.enqueue(root); // initialize
54
55 while(!queue.is_empty()) {
56 BinaryTree<String> node=queue.dequeue();
57 if (node!=null) {
58 System.out.println("output "+node);
59 queue.enqueue(node.getLeft()); // mind order: left first
60 queue.enqueue(node.getRight());
61 }
62 }
63 }
64
65
69 ("A",
70 new BinaryTree<String>("B",
71 new BinaryTree<String>("C"),
72 new BinaryTree<String>("D")),
73 new BinaryTree<String>("E",
74 new BinaryTree<String>("F"),
75 new BinaryTree<String>("G",
76 new BinaryTree<String>("H",
77 new BinaryTree<String>("I",
78 new BinaryTree<String>("J"),null),
79 new BinaryTree<String>("K")
80 ),
81 null
82 )
83 )
84 );
85 return root;
86 }
87
89 public static void indent(int n) {
90 for (int i=0;i<n;++i)
91 System.err.print(" ");
92 }
93
94 public static void main(String[] args) {
96
97 System.out.println("recursive traversal:");
98 recursive_traversal(tree,0);
99 System.out.println();
100
101 System.out.println("iterative traversal:");
103 System.out.println();
104
105 System.out.println("level order traversal:");
107 }
108}
Simple binary tree.
Definition: BinaryTree.java:26
BinaryTree< T > getLeft()
get left child or null
Definition: BinaryTree.java:86
BinaryTree< T > getRight()
get right child or null)
Definition: BinaryTree.java:88
boolean is_empty()
Is queue empty?
Definition: Queue.java:35
boolean is_empty()
Is stack empty?
Definition: Stack.java:14
example: transform recursive preoder traversal to iterative algorithm
static void indent(int n)
indent output on System.err
static void level_order_traversal(BinaryTree< String > root)
implement level-order traversal
static void recursive_traversal(BinaryTree< String > node, int level)
recursive algorithm
static BinaryTree< String > exampleTree()
generate some tree
static void iterative_traversal(BinaryTree< String > root)
iterative algorithm
A queue that outputs messages on enqueue and dequeue.
void enqueue(T x)
Enqueue element at end of queue.
T dequeue()
Remove front element from queue.
A stack that outputs messages on push and pop.
T pop()
Pop element from stack.
void push(T x)
Push x onto stack.
utilities (not related to AuD lecture)
Definition: Colormap.java:1
AuD lecture: Data structures, algorithms, examples.