AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
aud.example.expr.ExpressionTreeTraversal Class Reference

example: visualize expression tree traversal More...

+ Inheritance diagram for aud.example.expr.ExpressionTreeTraversal:
+ Collaboration diagram for aud.example.expr.ExpressionTreeTraversal:

Public Member Functions

 ExpressionTreeTraversal (ExpressionTree tree)
 create traversal application for tree
More...
 
void traverse (String type)
 start traversal More...
 
- Public Member Functions inherited from aud.util.SingleStepper
 SingleStepper (JFrame parent)
 create new instance More...
 
 SingleStepper (String caption)
 create new instance More...
 
JFrame parent ()
 get parent widget More...
 
void halt (String text, int timeout)
 display text and wait for user or timeout
More...
 
void setTimeout (int timeout)
 Set global timeout. More...
 
SingleStepper whereAmI ()
 print location of calling code More...
 
SingleStepper showSource ()
 jmp to caller's location in editor (emacs only) More...
 
void halt (String text)
 display text and wait for user (or global timeout) More...
 
void halt ()
 wait for user More...
 

Static Public Member Functions

static void main (String[] args)
 
static void main (String[] args)
 

Protected Member Functions

void onHalt ()
 
void output (ExpressionTree node)
 output node during traversal More...
 
void see (ExpressionTree node)
 arrived node for first time (for visualization) More...
 
void preorder (ExpressionTree node)
 recursive preorder traversal More...
 
void inorder (ExpressionTree node)
 recursive inorder traversal More...
 
void postorder (ExpressionTree node)
 recursive postorder traversal More...
 
void levelorder (ExpressionTree root)
 level order traversdal More...
 
- Protected Member Functions inherited from aud.util.SingleStepper
JComponent createComponents ()
 
void onNext ()
 call on button pressed More...
 
void println (String text)
 print to both, text area and stdout More...
 
void onHalt ()
 

Protected Attributes

ExpressionTree tree_ = null
 
DotViewer viewer_
 
SimpleDecorator decorator
 
- Protected Attributes inherited from aud.util.SingleStepper
JFrame frame
 
JTextArea history
 
JButton next
 
Object monitor = new Object()
 
int timeout = 0
 

Detailed Description

example: visualize expression tree traversal

Definition at line 7 of file ExpressionTreeTraversal.java.

Constructor & Destructor Documentation

◆ ExpressionTreeTraversal()

create traversal application for tree

Definition at line 15 of file ExpressionTreeTraversal.java.

15 {
16 super("aud.example.expr.ExpressionTreeTraversal");
17 tree_=tree;
18 decorator=(SimpleDecorator) tree_.getDecorator(); // same per tree
19 }
GraphvizDecorator getDecorator()
get decoration or null
Example for a simple decorator.

References aud.example.expr.ExpressionTreeTraversal.decorator, aud.example.expr.ExpressionTree.getDecorator(), and aud.example.expr.ExpressionTreeTraversal.tree_.

+ Here is the call graph for this function:

Member Function Documentation

◆ inorder()

void aud.example.expr.ExpressionTreeTraversal.inorder ( ExpressionTree  node)
protected

recursive inorder traversal

Definition at line 83 of file ExpressionTreeTraversal.java.

83 {
84 if (node!=null) {
85 see(node);
86
87 inorder((ExpressionTree) node.getLeft());
88 output(node);
89 inorder((ExpressionTree) node.getRight());
90 }
91 }
void inorder(ExpressionTree node)
recursive inorder traversal
void output(ExpressionTree node)
output node during traversal
void see(ExpressionTree node)
arrived node for first time (for visualization)

References aud.BinaryTree< T >.getLeft(), aud.BinaryTree< T >.getRight(), aud.example.expr.ExpressionTreeTraversal.inorder(), aud.example.expr.ExpressionTreeTraversal.output(), and aud.example.expr.ExpressionTreeTraversal.see().

Referenced by aud.example.expr.ExpressionTreeTraversal.inorder(), and aud.example.expr.ExpressionTreeTraversal.traverse().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ levelorder()

void aud.example.expr.ExpressionTreeTraversal.levelorder ( ExpressionTree  root)
protected

level order traversdal

Definition at line 103 of file ExpressionTreeTraversal.java.

103 {
104 Queue<ExpressionTree> queue=new Queue<ExpressionTree>();
105 queue.enqueue(null); // marker: next level
106 queue.enqueue(root);
107 int level=0; // keep track of/count levels
108 while (!queue.is_empty()) {
109 ExpressionTree node=queue.dequeue();
110
111 if (node==null) {
113 halt("enter next level "+(level++));
114 if (!queue.is_empty())
115 queue.enqueue(null); // marker: next level
116 }
117 else {
118 see(node);
119
120 if (node.getLeft()!=null)
121 queue.enqueue((ExpressionTree) node.getLeft());
122 if (node.getRight()!=null)
123 queue.enqueue((ExpressionTree) node.getRight());
124 output(node);
125 }
126 }
127 }
void highlightNode(GraphvizDecorable object)
Set highlighted node.
void halt()
wait for user

References aud.example.expr.ExpressionTreeTraversal.decorator, aud.Queue< T >.dequeue(), aud.Queue< T >.enqueue(), aud.BinaryTree< T >.getLeft(), aud.BinaryTree< T >.getRight(), aud.util.SingleStepper.halt(), aud.util.SimpleDecorator.highlightNode(), aud.Queue< T >.is_empty(), aud.example.expr.ExpressionTreeTraversal.output(), and aud.example.expr.ExpressionTreeTraversal.see().

Referenced by aud.example.expr.ExpressionTreeTraversal.traverse().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ main()

static void aud.example.expr.ExpressionTreeTraversal.main ( String[]  args)
static

Reimplemented from aud.util.SingleStepper.

Definition at line 129 of file ExpressionTreeTraversal.java.

129 {
130
131 if (args.length<1 || args.length>2) {
132 System.err.println
133 ("usage: java aud.example.expr.ExpressionTreeTraversal expr [mode]\n"+
134 "- expr: an expression, e.g., \"2*(3+4)\" "+
135 "(use quotes \"...\" on command line!)\n"+
136 "- mode: preorder | inorder | postorder | levelorder");
137 System.exit(-1);
138 }
139
140 ExpressionTree tree=new ExpressionParser().parse(args[0]);
142
143 app.traverse(args.length>1 ? args[1] : "preorder");
144
145 app.halt("QUIT");
146 System.exit(0);
147 }
ExpressionTreeTraversal(ExpressionTree tree)
create traversal application for tree

References aud.util.SingleStepper.halt(), aud.example.expr.ExpressionParser.parse(), and aud.example.expr.ExpressionTreeTraversal.traverse().

+ Here is the call graph for this function:

◆ onHalt()

void aud.example.expr.ExpressionTreeTraversal.onHalt ( )
protected

Reimplemented from aud.util.SingleStepper.

Definition at line 21 of file ExpressionTreeTraversal.java.

21 {
22 if (tree_!=null)
24 }
void display(String code)
display dot code
Definition: DotViewer.java:108

References aud.util.DotViewer.display(), aud.example.expr.ExpressionTreeTraversal.tree_, and aud.example.expr.ExpressionTreeTraversal.viewer_.

+ Here is the call graph for this function:

◆ output()

◆ postorder()

void aud.example.expr.ExpressionTreeTraversal.postorder ( ExpressionTree  node)
protected

recursive postorder traversal

Definition at line 93 of file ExpressionTreeTraversal.java.

93 {
94 if (node!=null) {
95 see(node);
96
97 postorder((ExpressionTree) node.getLeft());
98 postorder((ExpressionTree) node.getRight());
99 output(node);
100 }
101 }
void postorder(ExpressionTree node)
recursive postorder traversal

References aud.BinaryTree< T >.getLeft(), aud.BinaryTree< T >.getRight(), aud.example.expr.ExpressionTreeTraversal.output(), aud.example.expr.ExpressionTreeTraversal.postorder(), and aud.example.expr.ExpressionTreeTraversal.see().

Referenced by aud.example.expr.ExpressionTreeTraversal.postorder(), and aud.example.expr.ExpressionTreeTraversal.traverse().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ preorder()

void aud.example.expr.ExpressionTreeTraversal.preorder ( ExpressionTree  node)
protected

recursive preorder traversal

Definition at line 73 of file ExpressionTreeTraversal.java.

73 {
74 if (node!=null) {
75 see(node);
76
77 output(node);
78 preorder((ExpressionTree) node.getLeft());
79 preorder((ExpressionTree) node.getRight());
80 }
81 }
void preorder(ExpressionTree node)
recursive preorder traversal

References aud.BinaryTree< T >.getLeft(), aud.BinaryTree< T >.getRight(), aud.example.expr.ExpressionTreeTraversal.output(), aud.example.expr.ExpressionTreeTraversal.preorder(), and aud.example.expr.ExpressionTreeTraversal.see().

Referenced by aud.example.expr.ExpressionTreeTraversal.preorder(), and aud.example.expr.ExpressionTreeTraversal.traverse().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ see()

void aud.example.expr.ExpressionTreeTraversal.see ( ExpressionTree  node)
protected

arrived node for first time (for visualization)

Definition at line 36 of file ExpressionTreeTraversal.java.

36 {
37 decorator.markEdge(node);
38 }
void markEdge(GraphvizDecorable object)

References aud.example.expr.ExpressionTreeTraversal.decorator, and aud.util.SimpleDecorator.markEdge().

Referenced by aud.example.expr.ExpressionTreeTraversal.inorder(), aud.example.expr.ExpressionTreeTraversal.levelorder(), aud.example.expr.ExpressionTreeTraversal.postorder(), and aud.example.expr.ExpressionTreeTraversal.preorder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ traverse()

void aud.example.expr.ExpressionTreeTraversal.traverse ( String  type)

start traversal

Parameters
typedenotes the type of traversal "preorder", "inorder","postorder"
Exceptions
RuntimeExceptionfor unknown type

Definition at line 45 of file ExpressionTreeTraversal.java.

45 {
47 decorator.setGraphLabel("Traversal: ");
48
49 if (type.toLowerCase().startsWith("pre")) {
50 halt("START preorder traversal");
52 }
53 else if (type.toLowerCase().startsWith("in")) {
54 halt("START inorder traversal");
56 }
57 else if (type.toLowerCase().startsWith("post")) {
58 halt("START postorder traversal");
60 }
61 else if (type.toLowerCase().startsWith("level")) {
62 halt("START level-order traversal");
64 }
65 else
66 throw new RuntimeException("unknown traversal '"+type+"'");
67
69 halt("FINISHED");
70 }
void levelorder(ExpressionTree root)
level order traversdal
void clear()
Clear all decorations.

References aud.util.CommonGraphvizDecorator.clear(), aud.example.expr.ExpressionTreeTraversal.decorator, aud.util.SingleStepper.halt(), aud.util.SimpleDecorator.highlightNode(), aud.example.expr.ExpressionTreeTraversal.inorder(), aud.example.expr.ExpressionTreeTraversal.levelorder(), aud.example.expr.ExpressionTreeTraversal.postorder(), aud.example.expr.ExpressionTreeTraversal.preorder(), aud.util.CommonGraphvizDecorator.setGraphLabel(), and aud.example.expr.ExpressionTreeTraversal.tree_.

Referenced by aud.example.expr.ExpressionTreeTraversal.main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ decorator

◆ tree_

◆ viewer_

DotViewer aud.example.expr.ExpressionTreeTraversal.viewer_
protected
Initial value:
= DotViewer.displayWindow
((String) null,"aud.example.expr.ExpressionTreeTraversal")

Definition at line 10 of file ExpressionTreeTraversal.java.

Referenced by aud.example.expr.ExpressionTreeTraversal.onHalt().


The documentation for this class was generated from the following file: