Solved

recurrence relation for binary tree height algorithm?

Posted on 1998-11-10
9
2,864 Views
Last Modified: 2008-02-26
what would the recurrence relation be for the following pseudo code algorithm?

void Height(T)
{
     if (T is not empty)
     {
          lefttreeht = Height(left subtree of T);
          righttreeht = Height(right subtree of T);
         
          if (lefttreeht > righttreeht)
               return lefttreeht + 1;
          else
               return righttreeht + 1;
     }
     else
          return 0;
}

0
Comment
Question by:melissak
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 3

Expert Comment

by:arnond
ID: 1254160
do you mean big O complexity ?
if so, it's O(log n), n being the number of nodes in the tree.

Arnon David.
0
 

Author Comment

by:melissak
ID: 1254161
No, I mean;

     base case C(0)=0

recurrence relation for a tree of n nodes:

     C(n) = C(n-1) + something or nothing
     C(n+1) = C(n) + something or nothing

*parenthesis indicate subscript

this is what I think the format should somewhat be but
it could be something different.  I do know that the
explicit formula should be:

     C(n)=log(2)[n+1]-1

which was developed from some recurrence relation.
thanks
mk
0
 
LVL 84

Expert Comment

by:ozo
ID: 1254162
Are you assuming the tree is balanced?
0
 

Author Comment

by:melissak
ID: 1254163
I don't think it matters.  The definition for the height of a
tree is: the number of nodes on the longest path from the root
to a leaf.  So, worst case binary tree would be one that has nodes attatched to the left or right side only (a diagonal).
0
Does Powershell have you tied up in knots?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
LVL 84

Expert Comment

by:ozo
ID: 1254164
so is C(n) supposed to be the worst case height of a balanced tree of n nodes?
0
 
LVL 16

Accepted Solution

by:
heyhey_ earned 100 total points
ID: 1254165
maybe i am missing something, but if
the explicit formula should be:
     C(n)=log(2)[n+1]-1
than the recurrence relation should be
     C(n+1)=C(n) + log(2)[n+1]
     
0
 

Expert Comment

by:guga
ID: 1254166
I have one comment
if C(n)=log(2)[n+1]-1 then let's n=4

C(n)=log(2)[5]-1;

but height of tree must be integer!
0
 

Expert Comment

by:guga
ID: 1254167
may be (i don't sure)
c(n+1) = C(n) + 1
0
 

Author Comment

by:melissak
ID: 1254168
I had math student help me.  With each call to the algorithm the list of N elements is halved.  Since the algorithm recursively calls itself twice the formula is:
C(N) = 2*C(N/2)
To Prove relation:
Let N = 2^n

C(2^n) = 2*C(2^n-1)
C(2^n-1) = 2*C(2^n-2)
C(2^n) = 2^k * C(2^n-k)
Let k=n
C(2^n) = 2^n * C(2^0) = 2^n

since 2^n = N

C(N) = N

BigOH = O(N)

sorry took so long to respond.  e-mail and internet down.
0

Featured Post

New My Cloud Pro Series - organize everything!

With space to keep virtually everything, the My Cloud Pro Series offers your team the network storage to edit, save and share production files from anywhere with an internet connection. Compatible with both Mac and PC, you're able to protect your content regardless of OS.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
mixing C++ and C code elegantly 10 153
Passing a array as parameter - C 2 84
What is atomic operation? 6 45
Memory going from 12gb to 64gb or 96gb. worth it? 15 132
Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now