The third programming project involves writing a program that allows the user to enter a binary tree in a

parenthesized prefix format and then allows it to be categorized and allows various features of that tree to be

displayed. An example of a tree written in the input format is the following:

(A(G(j)(1))(z(5)))

In the above example, data in each node of the tree contains a single alphanumeric character. No spaces are

permitted. Each tree is enclosed in parentheses. Inside those parentheses, after the single character are either

zero, one or two subtrees also enclosed in parentheses. When only one subtree is present, it is the left subtree

and when two are present, they represent the left and right subtrees. So the above string represents the following

binary tree:

A

zG

j 1 5

The various categorizations include the following:

1. Whether the binary tree is balanced, which means for each node in the tree, the absolute difference

between the height of its left and right subtrees is at most 1. The above binary tree is balanced.

2. Whether the binary tree is full. A full binary tree has the maximum number of nodes for a tree of its

height. The above tree is not full because a tree of that height can contain 7 nodes, but the above tree

only has 6.

3. Whether the binary tree is proper. In a proper binary tree, every node has either 0 or 2 children. The

above tree is not proper because the node containing z has only one child.

In addition, the program should allow the user to request that each of the following features of the tree be

displayed:

1. The height of the tree. The height of a tree is the maximum level of all of its nodes. The root node

containing A is at the level 0. Because all three leaf nodes in the above tree are at level 2, its height is 2.

2. The number of nodes in the tree. As previously mentioned, the above tree has 6 nodes.

3. An fully parenthesized in order traversal of the tree. The following should be displayed as the inorder

traversal of the above tree: ((( j ) G ( 1 )) A (( 5 ) z ))