Data Structures and Algorithms
with Object-Oriented Design Patterns in C++
-
Devise an algorithm to compute the height of a tree.
Write an implementation of your algorithm
as the Height member function of the abstract class Tree
declared in Program
. -
Devise an algorithm to count the number of internal nodes in a tree.
Write an implementation of your algorithm
as the Count member function of the abstract class Tree
declared in Program
. -
Devise an algorithm to count the number of leaves in a tree.
Write an implementation of your algorithm
as a member function of the abstract class Tree
declared in Program
. -
Devise an abstract (generic) algorithm to compare trees.
(See Exercise
).
Write an implementation of your algorithm
as the CompareTo member function
of the abstract class Tree
declared in Program
. -
The Tree::Iter class defined in
Programs
,
and
does a preorder traversal of a tree.
-
Write an iterator class that does
a postorder traversal.
-
Write an iterator class that does
a breadth-first traversal.
-
Write an iterator class that does
an inorder traversal.
(In this case,
assume that the tree is a BinaryTree).
-
Complete the GeneralTree class
declared in Program
by providing suitable definitions for the following member functions:
IsEmpty, IsLeaf, Degree and CompareTo.
Write a test program and test your implementation. -
Complete the NaryTree class
declared in Program
by providing suitable definitions for the following member functions:
NaryTree (destructor), Purge,
IsLeaf, Degree and CompareTo.
Write a test program and test your implementation. -
Complete the BinaryTree class
declared in Program
by providing suitable definitions for the following member functions:
IsEmpty, IsLeaf, Degree,
Key, AttachKey, DetachKey,
Left, AttachLeft, DetachLeft,
Right, AttachRight,
DetachRight and Subtree.
Write a test program and test your implementation. -
Write a visitor that draws a picture of a tree on the screen.
-
Design and implement an algorithm that constructs an expression tree
from an infix expression such as

Hint: See Project
.
Copyright © 1997 by Bruno R. Preiss, P.Eng. All rights reserved.