On Jun 30, 2009, at 1:05 AM, Emeka wrote:

> Hello All,
>
> I have a BinaryTree Nodes that I want to resolve it's depth and the  
> BinaryTree may be unbalanced. How do I do this? Can't just figure it  
> out on my own?
> It is in the form of vector of vectors, and from one cell of any  
> vector I can move to the next row  however the column index has to  
> be either increased by one or decreased by one(and the new cell is  
> empty).


If you had a balanced binary tree, you could just take log_2(N) where  
N is the number of nodes. :) But since you don't you have to do  
something like get the max depth of the left branch and the right  
branch and add one to it (pseudocode):

(defn depth [tree]
   (if (nil? tree) 0
       (+ 1 (max (depth (left tree)) (depth (right tree)))))

If you're storing this binary tree in an array, I vaguely remember  
doing something like storing the left node at 2*i where i is the index  
of the current node, and the right node at 2*i+1. I'm not sure how  
you'd do that with an unbalanced tree unless you did something like  
have nils in your array. If you did that, you just need to take  
log_2(I) where I is the index of the last non-nil value in the array.

I'm not sure exactly what data structure you're working with to make  
your binary tree though. Can you send an example of the tree you have  
as vectors?

Are you also trying to compute whether or not it's unbalanced or is  
that just a given that it might be?

—
Daniel Lyons


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to