This preview shows page 1. Sign up to view the full content.
Unformatted text preview: for 2n-1
Or log2(n+1) levels for n nodes.
So it takes O(log n) checks to find a value. Here's the function to initiate the iteration.
void SetIterator(NodePtr root)
curr = root;
if (curr != 0)
while (curr->left != 0)
curr = curr->left;
curr} void* Next(nodePtr root)
void* rvalue = curr->data;
currif (curr->right != 0) // into right subtree
curr = curr->right;
currwhile (curr->left != 0)
(currcurr = curr->left;
else if (curr->parent == 0) // no parent
(currcurr = 0; // we are finished
0; // we are finished
else // find ancestor
while (curr->parent != 0
(curr&& (curr->parent)->left != curr)
(curr->parent)curr = curr->parent;
currcurr = curr->parent;
} This assumes every node at each level is filled
– a balanced tree.
And we can make a tree balanced.
As each inserted node takes O(log n)
comparisons to find where it goes, the complete
insertion of n values is O(nlog n).
Thus, a binary search tree is an O(nlog n) sorting
technique with an O(log n) s...
View Full Document