Suggestions
Use up and down arrows to review and enter to select.Please wait while we process your payment
If you don't see it, please check your spam folder. Sometimes it can end up there.
If you don't see it, please check your spam folder. Sometimes it can end up there.
Please wait while we process your payment
By signing up you agree to our terms and privacy policy.
Don’t have an account? Subscribe now
Create Your Account
Sign up for your FREE 7-day trial
Already have an account? Log in
Your Email
Choose Your Plan
Individual
Group Discount
Save over 50% with a SparkNotes PLUS Annual Plan!
Purchasing SparkNotes PLUS for a group?
Get Annual Plans at a discount when you buy 2 or more!
Price
$24.99 $18.74 /subscription + tax
Subtotal $37.48 + tax
Save 25% on 2-49 accounts
Save 30% on 50-99 accounts
Want 100 or more? Contact us for a customized plan.
Your Plan
Payment Details
Payment Summary
SparkNotes Plus
You'll be billed after your free trial ends.
7-Day Free Trial
Not Applicable
Renews May 2, 2024 April 25, 2024
Discounts (applied to next billing)
DUE NOW
US $0.00
SNPLUSROCKS20 | 20% Discount
This is not a valid promo code.
Discount Code (one code per order)
SparkNotes PLUS Annual Plan - Group Discount
Qty: 00
SparkNotes Plus subscription is $4.99/month or $24.99/year as selected above. The free trial period is the first 7 days of your subscription. TO CANCEL YOUR SUBSCRIPTION AND AVOID BEING CHARGED, YOU MUST CANCEL BEFORE THE END OF THE FREE TRIAL PERIOD. You may cancel your subscription on your Subscription and Billing page or contact Customer Support at custserv@bn.com. Your subscription will continue automatically once the free trial period is over. Free trial is available to new customers only.
Choose Your Plan
For the next 7 days, you'll have access to awesome PLUS stuff like AP English test prep, No Fear Shakespeare translations and audio, a note-taking tool, personalized dashboard, & much more!
You’ve successfully purchased a group discount. Your group members can use the joining link below to redeem their group membership. You'll also receive an email with the link.
Members will be prompted to log in or create an account to redeem their group membership.
Thanks for creating a SparkNotes account! Continue to start your free trial.
We're sorry, we could not create your account. SparkNotes PLUS is not available in your country. See what countries we’re in.
There was an error creating your account. Please check your payment details and try again.
Please wait while we process your payment
Your PLUS subscription has expired
Please wait while we process your payment
Please wait while we process your payment
In order to take advantage of the fast searching abilities of a binary search tree, it is first necessary to put your data into this format. For the following section, we will assume that we have the following functions to access the data. In your programs this may mean reading from a file or from standard input.
The first is a boolean that returns true while data remains and the second will supply the next piece of data. Realize that the data is coming in no particular order (ie. it is not presorted).
We want to build the tree with the following algorithm. We will read in a piece of data, find the appropriate place to add it into the tree (meaning we'll find a leaf that could have this piece of data as a child) and then add the data element in that spot.
First we will write a function that determines where the data element should be added to the tree. The return from the function will be the memory address where the data element should be stored. This means that if we find that the appropriate storage location is the right child of tree t, we would return &(t->right). The algorithm consists of walking left or right down the tree according to whether the data element is greater than or less than the data in the current node. We will also assume that the data is all unique, so there is no chance of the same number appearing more than once. It's possible to handle multiple instances of the same data element, but we'll ignore this situation for simplicity's sake.
If insertion_location returns null, whatever tree was passed as the argument should instead point to a new tree with that data element. Note that when walking through the tree, if suffices to check if the number is less than the data in the current node to determine whether it belongs in the left or the right subtree.
Now that we have written the more complex recursive part, we simply need to write the iterative function that calls the recursive one to build the tree.
Notice that whenever we call a function that returns dynamically allocated memory, it is always necessary to check for the possibility that allocation failed and returned a NULL pointer. The only time that insert_point will be NULL is when ~insertion_location~ is called for the first time, with a NULL pointer, that is, before there is anything in the tree.
Please wait while we process your payment