6.18 Revise the algorithm of Figure 6.6 so that it performs an in-order enumeration, rather than preorder. class BinTree implements Iterable { BinTree left: BinTree right; T val; } *** // other methods: insert, delete, lookup, public Iterator iterator () { return new TreeIterator (this); } private class TreeIterator implements Iterator { private Stack> a= new Stack>(); TreeIterator (BinTree n) { if (n. val - null) s.push (n); } } public boolean hasNext() { return s. empty(); } public T next() { if (!has Next ()) throw new NoSuchElementException(); BinTree n = s.pop(); if (n.right != null) s.push(n.right); if (n.left= null) s.push(n.left); return n. val; } public void remove() { throw new Unsupported OperationException(); } Figure 6.6 Java code for preorder enumeration of the nodes of a binary tree. The nested TreeIterator class uses an explicit Stack object (borrowed from the standard library) to keep track of subtrees whose nodes have yet to be enumerated. Java generics, specified as type arguments for BinTree, Stack, Iterator, and Iterable, allow next to return an object of the appropriate type, rather than the undifferentiated Object. The remove method is part of the Iterator interface, and must therefore be provided, if only as a placeholder.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question
Please help me with this Principles of programming language homework question
6.18 Revise the algorithm of Figure 6.6 so that it performs an in-order enumeration, rather than
preorder.
class BinTree<T> implements Iterable<T> {
BinTree<T> left:
BinTree<T> right;
T val;
***
// other methods: insert, delete, lookup, ...
public Iterator<T> iterator () {
return new TreeIterator (this);
}
private class TreeIterator implements Iterator<T> {
private Stack<BinTree<T>> s= new Stack<BinTree<T>>();
TreeIterator (BinTree<T> n) {
if (n.val != null) s.push (n);
}
}
public boolean hasNext () {
return s. empty ();
}
public T next () {
if (!hasNext()) throw new NoSuchElementException();
BinTree<T> n = s.pop();
if (n.right != null) s.push (n.right);
if (n.left != null) s.push(n.left);
return n. val;
}
public void remove() {
throw new Unsupported OperationException();
}
}
Figure 6.6 Java code for preorder enumeration of the nodes of a binary tree. The nested
TreeIterator class uses an explicit Stack object (borrowed from the standard library) to keep
track of subtrees whose nodes have yet to be enumerated. Java generics, specified as <T> type
arguments for BinTree, Stack, Iterator, and Iterable, allow next to return an object of
the appropriate type, rather than the undifferentiated Object. The remove method is part of
the Iterator interface, and must therefore be provided, if only as a placeholder.
Transcribed Image Text:6.18 Revise the algorithm of Figure 6.6 so that it performs an in-order enumeration, rather than preorder. class BinTree<T> implements Iterable<T> { BinTree<T> left: BinTree<T> right; T val; *** // other methods: insert, delete, lookup, ... public Iterator<T> iterator () { return new TreeIterator (this); } private class TreeIterator implements Iterator<T> { private Stack<BinTree<T>> s= new Stack<BinTree<T>>(); TreeIterator (BinTree<T> n) { if (n.val != null) s.push (n); } } public boolean hasNext () { return s. empty (); } public T next () { if (!hasNext()) throw new NoSuchElementException(); BinTree<T> n = s.pop(); if (n.right != null) s.push (n.right); if (n.left != null) s.push(n.left); return n. val; } public void remove() { throw new Unsupported OperationException(); } } Figure 6.6 Java code for preorder enumeration of the nodes of a binary tree. The nested TreeIterator class uses an explicit Stack object (borrowed from the standard library) to keep track of subtrees whose nodes have yet to be enumerated. Java generics, specified as <T> type arguments for BinTree, Stack, Iterator, and Iterable, allow next to return an object of the appropriate type, rather than the undifferentiated Object. The remove method is part of the Iterator interface, and must therefore be provided, if only as a placeholder.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Binomial Heap
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education