Data Structures and Algorithms
with Object-Oriented Design Patterns in C#![]() ![]() ![]() ![]() ![]() |
The Insert method of the BinarySearchTree class
is defined in Program .
This method takes as its argument the object
which is to be inserted into the binary search tree.
It is assumed in this implementation that duplicate keys are not permitted.
That is, all of the keys contained in the tree are unique.
Program: BinarySearchTree class Insert, AttachKey and Balance methods.
The Insert method behaves like the Find method until it arrives at an external, empty node. Once the empty node has been found, it is transformed into an internal node by calling the AttachKey method. AttachKey works as follows: The object being inserted is assigned to the key field and two new empty binary trees are attached to the node.
Notice that after the insertion is done,
the Balance method is called.
However, as shown in Program ,
the BinarySearchTree.Balance method does nothing.
(Section
describes the class AVLTree
which is derived from the BinarySearchTree class
and which inherits the Insert method but
overrides the Balance operation).
The asymptotic running time of the Insert method
is the same as that of Find for an unsuccessful search.
That is, in the worst case the running time is
and the average case running time is
where is the average depth of an external
node in a binary search tree with n internal nodes.
When
, the worst case running time is O(n)
and the average case is
.