@all : this little bit different question , but kinda related to it
i am getting segmentation fault in one test case .. but not able to figure
out why it is happening
little help required.
question is , given a BST find floor of a given key.

inorder of BST = 10 20 30 40 50
                   key = 2
   output:     floor= 20
now if i give key = 5 , output should be floor=0;
but i am getting segmentation fault for test case.

here is the code:-

int findFloor(node *root,node **floor,int key)
{
int left;
        if(!root)
                return 1;

        if(!findFloor(root->left,floor,key))
                return 0;

        if(root->data==key)
        {
                (*floor)=root;
                return 0;
        }
        if(key < root->data)
        {
                return 0;
        }
        (*floor)=root;
        return findFloor(root->right,floor,key);

}

Thanks in advance



On Tue, Feb 21, 2012 at 8:25 AM, Supraja Jayakumar <suprajasank...@gmail.com
> wrote:

> :) Apologize for the mistake - it is a BST.
>
> Thank You
>
>
> On Mon, Feb 20, 2012 at 7:46 PM, Gene <gene.ress...@gmail.com> wrote:
>
>> The topic of the discussion is:
>>
>> Finding closest double in a Btree
>>
>> A binary tree that is also a B-Tree is (roughly) a Binary Search
>> Tree.
>>
>>
>>
>> On Feb 20, 9:37 pm, Dave <dave_and_da...@juno.com> wrote:
>> > @Gene: I don't know what is confusing about the OP's problem
>> > statement:
>> >
>> > "Question is given a binary tree and a key K, code to find the node
>> > with the
>> > closest value."
>> >
>> > What do you find confusing about that?
>> >
>> > Are you opposed to using shorthand in the subject line that is then
>> > clarified in the body of the posting?
>> >
>> > Dave
>> >
>> > On Feb 20, 8:19 pm, Gene <gene.ress...@gmail.com> wrote:
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > > Sure the algorithm works for any binary tree, but a B-Tree is a more
>> > > general data structure. So the problem statement is confusing.  This
>> > > is probably the reason some people gave alternatives that only work
>> > > with a BST.  A BST is a special case of a B-Tree.
>> >
>> > > On Feb 20, 8:58 pm, saurabh singh <saurab...@gmail.com> wrote:
>> >
>> > > > @gene probably you are saying this on the basis of the subject of
>> the
>> > > > mail?Please read the problem statement stated in the mail.Even its
>>  a B
>> > > > tree doesn't effects the algorithm proposed by don which says
>> *traverse
>> > > > each node and keep track of minimum.*
>> > > > So irrespective of the data structure used this solution is bound to
>> > > > work....
>> > > > closest:
>> > > > arguments: dataStructure T,int number
>> >
>> > > > tmp:=getelem(T);
>> > > > min=tmp.value
>> > > > while( getelem returns non null values)
>> > > >  do
>> > > >  nxt:=getelem(T);
>> >
>> > > > if(abs(nxt.value-number)<min) then
>> > > > tmp=nxt
>> > > > min=nxt.value
>> > > > done
>> >
>> > > > done
>> >
>> > > > return tmp
>> >
>> > > > The nextelem function can be written according to the data
>> structure used.
>> >
>> > > > Saurabh Singh
>> > > > B.Tech (Computer Science)
>> > > > MNNIT
>> > > > blog:geekinessthecoolway.blogspot.com
>> >
>> > > > On Tue, Feb 21, 2012 at 6:06 AM, Gene <gene.ress...@gmail.com>
>> wrote:
>> > > > > Not to mention the subject line seems to be asking about B-Trees,
>> > > > > which is no kind of binary tree, so the OP gets it wrong, too.
>> >
>> > > > > On Feb 20, 7:28 pm, Dave <dave_and_da...@juno.com> wrote:
>> > > > > > @Don: By that measure, it also is trivial if the tree is a BST.
>> You
>> > > > > > just find the largest node < x and the smallest one > x and
>> choose
>> > > > > > between them.
>> >
>> > > > > > But since the original problem did not specify a BST, your
>> solution is
>> > > > > > non-responsive. If I were grading a test, I'd have to count your
>> > > > > > solution as wrong, figuring that you do not know the difference
>> > > > > > between a binary tree and a binary search tree.
>> >
>> > > > > > Dave
>> >
>> > > > > > On Feb 20, 5:13 pm, Don <dondod...@gmail.com> wrote:
>> >
>> > > > > > > Yes, I am assuming a binary search tree. The problem is
>> trivial
>> > > > > > > otherwise.
>> > > > > > > If it is just a binary tree, you visit each node and keep
>> track of the
>> > > > > > > closest.
>> > > > > > > Don
>> >
>> > > > > > > On Feb 20, 5:02 pm, Dave <dave_and_da...@juno.com> wrote:
>> >
>> > > > > > > > @Don: Aren't you assuming a binary _search_ tree? Only a
>> binary tree
>> > > > > > > > was specified by the OP.
>> >
>> > > > > > > > Dave
>> >
>> > > > > > > > On Feb 20, 10:44 am, Don <dondod...@gmail.com> wrote:
>> >
>> > > > > > > > > Supraja,
>> >
>> > > > > > > > > I think that your solution will work, but it does more
>> work than is
>> > > > > > > > > necessary. You don't need to traverse the entire tree.
>> >
>> > > > > > > > > node findClosest(node root, double k)
>> > > > > > > > > {
>> > > > > > > > >   node result = root;
>> > > > > > > > >   double diff = fabs(root->value - k);
>> > > > > > > > >   for(node loc = root; loc; loc = (loc->value > k) ?
>> loc->left :
>> > > > > loc->right)
>> >
>> > > > > > > > >   {
>> > > > > > > > >     double newDiff = fabs(loc->value - k);
>> > > > > > > > >     if (newDiff < diff)
>> > > > > > > > >     {
>> > > > > > > > >       result = loc;
>> > > > > > > > >       diff = newDiff;
>> > > > > > > > >     }
>> > > > > > > > >   }
>> > > > > > > > >   return result;
>> >
>> > > > > > > > > }
>> >
>> > > > > > > > > On Feb 20, 5:24 am, Supraja Jayakumar <
>> suprajasank...@gmail.com>
>> > > > > > > > > wrote:
>> >
>> > > > > > > > > > Hi
>> >
>> > > > > > > > > > Question is given a binary tree and a key K, code to
>> find the
>> > > > > node with the
>> > > > > > > > > > closest value.
>> >
>> > > > > > > > > > I'd be happy to receive some feedback about my solution
>> too.
>> >
>> > > > > > > > > > Pls find the code below:
>> >
>> > > > > > > > > > class FindingClosestNodeInTree {
>> > > > > > > > > > private static double difference = 0.0;
>> > > > > > > > > > private static doule key = 0.0;
>> > > > > > > > > > int main() {
>> > > > > > > > > >     BinaryTree bt;
>> > > > > > > > > >     bt.insert(20.43);
>> > > > > > > > > >     bt.insert(12.78);
>> > > > > > > > > >     bt.insert(19.89);
>> > > > > > > > > >     bt.insert(32.69);
>> > > > > > > > > >     bt.insert(2.54);
>> > > > > > > > > >     cout << "Please provide the key value" << endl;
>> > > > > > > > > >     cin >> key;
>> > > > > > > > > >     const Node &closestNode = closestValue(bt);
>> > > > > > > > > >     cout << << "Node that has the closest value to " <<
>>  <<
>> > > > > > > > > > closestNode.value;
>> > > > > > > > > > return 1;}
>> >
>> > > > > > > > > > const Node & closestValue(const BinaryTree &node) {
>> > > > > > > > > > if(node==null)
>> > > > > > > > > >     return;
>> >
>> > > > > > > > > > int val = node.value;
>> > > > > > > > > > int currDiff = val > key ? val-key:key-val;
>> > > > > > > > > > difference = currDiff > difference ?
>> currDiff:difference;
>> > > > > > > > > > if(node.left!=null)
>> > > > > > > > > >     closestValue(node.left);
>> > > > > > > > > > if(node.right!=null)
>> > > > > > > > > >     closestValue(node.right);
>> > > > > > > > > > return difference;
>> >
>> > > > > > > > > > }
>> > > > > > > > > > }
>> >
>> > > > > > > > > > Thanks
>> > > > > > > > > > Supraja J- Hide quoted text -
>> >
>> > > > > > > > - Show quoted text -
>> >
>> > > > > --
>> > > > > You received this message because you are subscribed to the
>> Google Groups
>> > > > > "Algorithm Geeks" group.
>> > > > > To post to this group, send email to algogeeks@googlegroups.com.
>> > > > > To unsubscribe from this group, send email to
>> > > > > algogeeks+unsubscr...@googlegroups.com.
>> > > > > For more options, visit this group at
>> > > > >http://groups.google.com/group/algogeeks?hl=en.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>>
>
>
> --
> U
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to