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
This section provides an alternate way to implement trees in C. As described above, the purpose of showing this implementation is because it involves using arrays, which are linear, meaning all the data is in a line, to implement trees, where data is stored hierarchically.
As you can see, we will be considering only a binary tree for this example, but the same technique could be used for a tree where all nodes had 3 children, 4 children, etc. There are a few inherent limitations to this method. The first is that because it uses a static array, the fixed size of the array means that there is a fixed maximum size for the tree. In general, this method requires deciding the maximum depth of the tree beforehand. The next step is to figure out how many nodes a complete tree of that size would require. Consider first the case of a binary tree. There is one node of depth 0. That one node has two children which are at depth 1. Each of those two have two children which are at depth 2. The following table shows the progression.
0 | 1 |
1 | 2 |
2 | 4 |
3 | 8 |
etc. We can see that the number of nodes doubles with each deeper level. In general, at depth n, there will be 2n nodes. The total number of nodes in a tree of depth n is 2(n + 1) - 1. This general sum makes sense because the number of nodes at depth n is one more than the total of all of the previous nodes.
Once you have determined the maximum number of nodes that there can be, you then need to make a type which holds an array that contains that many cells. Assume that each element in the tree is of the type data_t.
In this example, we have stored the maximum number of nodes in a sharp defined constant. Note that this means that we need to know this number when we compile the program, as opposed to being able to calculate it at run time. If MAX_NODES can only be determined at run time, then you must allocate memory dynamically.
Now we need to figure out how we are actually going to use this array for our tree. To start with, the root of the tree is always in the zero cell.
An inherent limitation to the array method is that cells will exist for nodes even when there is no data at those locations. For this reason you need to put some value in empty locations to indicate that they hold no data. Thus, this implementation of the array method will only work when the data is such that a sentinel value is available to indicate empty nodes. For example, if the data elements were positive integers, then a -1 might indicate empty. This could be done with a sharp define.
Note that this will only work when the empty value is not a possible data value, but the data_t can hold it. If the data elements could potentially be negative integers then -1 would not work.
Please wait while we process your payment