1. Extend BinaryTree class to implement Iterable interface. The iterator
should traverse the binary tree pre-order.
2. Extend BinarySearchTree class from BinaryTree class. BinarySearchTree
class should have an extra iterator method levelOrderIterator which
returns an Iterator that traverses the binary search tree in level order.
Write your traverse methods such that they print each traversed node to
console. Read integers (separated by sapces) from test.txt file. Create a
BinaryTree and a BinarySearchTree. Traverse your trees.
Consider the binary tree representation of a family tree in the book. Extend
BinaryTree class to implement FamilyTree class. Your FamilyTree class should
include the following features:
1. One parameter constructor to build a person’s family. The person should
be at the root.
2. Add a new person in the family tree.
The add method should take three parameters:
The name of the person to be added
The name of the person’s father or mother
The nickname of the person’s father or mother.
The nickname is given as in Arabic culture:
ibn-Fatih (son/daughter of Fatih) or
ebu-Fatih (father/mother of Fatih).
So, the name of a son/daughter or the name of the father/mother is given
in nickname format to the method. So, there could be more than one
person with the same name in the family tree. To specify where to insert
the person, the name of his/her mother/father is specified together with
mother’s/father’s nickname. If there are more than one father/mother with
the same name and nickname the insertion cannot be completed. Your
method should throw an exception specifying both person’s mother/father
3. A method to traverse the family tree in pre-order. Note that the pre-order
traversal is not the same as the traversal of the binary tree. You should
override the pre-order traversal method of BinaryTree.
4. Override the iterator method of BinaryTree o that the iterator correctly
traverses the family tree.
Read family.txt file which includes a family with a person in each line.
The format of the txt file will be as:
Ayşe, Hasan, ebu-Ayşe
Ali, Ayşe, ibn-Hasan
Sema, Hasan, ebu-Ayşe
Create a FamilyTree.
Write your traverse method such that prints each traversed node to
console. Traverse your tree.
– Write a main class for each of two questions.
– Don’t use any other third part library.
– For any question firstly use course news forum in moodle, and then the
– You can submit assignment one day late and will be evaluated over twenty
– Register github student pack and create private project and upload your
projects into github.
– Your appeals are considered over your github project process.
– Use given CSE222-VM to develop and test your homeworks (your code
must be working on CSE222-VM), CSE222-VM download link will be given
– Implement clean code standarts in your code;
o Classes, methods and variables names must be meaningful and
related with the functionality.
o Your functions and classes must be simple, general, reusable and
focus on one topic.
o Use standart java code name conventions.
– Add all javadoc documentations for classes, methods, variables …etc. All
explanation must be meaningful and understandable.
– You should submit your homework code, javadoc and report to Moodle in a
– Use the given homework format including selected parts:
Detailed system requirements
The Project usecase diagrams (extra points)
Class diagrams *
Problem solutions approach *
Running command and results
– No error handling : -50
– No javadoc documentation : -50
– No report : -90
– Disobey restrictions : -100
– Cheating : -200
– Your solution is evaluated over 100 as your performance.