Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / First Aid / March 2008

Tip: Looking for answers? Try searching our database.

Please help for a LinkBinaryTreeInJava

Thread view: 
Basanta - 16 Mar 2008 18:42 GMT
I am new in this group,I don't know how far it would help me.
I tried to make a linked based binary tree following the book "data
structures and algorithms in java" By goodRich and tamassia.I did all
but I wanted to implement a function to determine whether a particular
node exists or not.All I want to implement a function boolean
exists(node n).Can anyone help??My program is as follows:-

import java.io.*;

interface Node {
       Object getData();
       int getID();
              }

class TreeEmptyException extends Exception {
     TreeEmptyException(String message) {
     super(message);
   }
}

class LinkBinTree {
     BinNode root;
     int size;
     LinkBinTree(Object O) {
         root = new BinNode(0);
                           }

class BinNode implements Node {
           int id;
           BinNode left;
           BinNode right;
           Object data;
      BinNode(int iden) {
           id = iden;
           left = null;
           right = null;
           data = null;
                        }
      BinNode(Object O) {
           id =  0;
           left = null;
           right = null;
           data = null;
                       }
      public Object getData() {return data;}
      public int getID() { return id;}

       void addLeft(Object obj) {
            BinNode b = new BinNode(obj);
            left = b;
                                 }

       void addRight(Object obj) {
            BinNode r = new BinNode(obj);
            right = r;
                                 }

     BinNode addLeft(Node n,Object O) throws TreeEmptyException
   {
            if(!exists(n)) throw new TreeEmptyException("Tree doesn't
exists");
            return n.addLeft(O);
}

     BinNode addRight(Node n,Object O) throws TreeEmptyException{
   if(!exists(n)) throw new TreeEmptyException("Tree doesn't
exists");
           return n.addRight(O);
}

     void preOrder(Node n) {
             LinkQueueApp<Integer> q =new LinkQueueApp<Integer>();
             int p=n.getID();
             q.enqueue(p);
             while(!q.isEmpty()) {
                   p =q.dequeue();
                   System.out.println("The pre-order is : "
+n.getData());
                   for(int i=p;(i==p+1) || (i==p+2)&&i<=size;i++)
                       q.enqueue(i);
                                 }

}

void boolean exists(Node n) {
        if(Node == root) return;
        else {
           if(Node
Mark Space - 16 Mar 2008 18:52 GMT
> I am new in this group,I don't know how far it would help me.
> I tried to make a linked based binary tree following the book "data
[quoted text clipped - 9 lines]
>         int getID();
>                }

This is kind of interesting.  Does your book explain why nodes have both
a data element and an ID?  Why not just use the data?

I feel this may make your tree special in some regard, and affect the
answer to your question.  More info would help here. How do you search?
 Do you look for data? ID? both?
Basanta - 16 Mar 2008 19:04 GMT
> > I am new in this group,I don't know how far it would help me.
> > I tried to make a linked based binary tree following the book "data
[quoted text clipped - 16 lines]
> answer to your question.  More info would help here. How do you search?
>   Do you look for data? ID? both?

I look only for ID.
Mark Space - 16 Mar 2008 19:26 GMT
> I look only for ID.

Can I ask why?  What's the idea there?

Also, are ID comparable? Do they have a sorted order?
HelpMe - 16 Mar 2008 19:46 GMT
> > I look only for ID.
>
> Can I ask why?  What's the idea there?
>
> Also, are ID comparable? Do they have a sorted order?

No,but I want to implement functions addLeft and addRight for which
existence of the node where adding is performed is mandatory.
Andrew Marcus - 16 Mar 2008 19:50 GMT
> > > I look only for ID.
>
[quoted text clipped - 4 lines]
> No,but I want to implement functions addLeft and addRight for which
> existence of the node where adding is performed is mandatory.
Andrew Marcus - 16 Mar 2008 19:53 GMT
> > > > I look only for ID.
>
[quoted text clipped - 4 lines]
> > No,but I want to implement functions addLeft and addRight for which
> > existence of the node where adding is performed is mandatory.

See,both of you helpme and basanta.It's so simple I don't think you
require help.Try it out.
Lew - 16 Mar 2008 20:38 GMT
> I am new in this group,I don't know how far it would help me.
> I tried to make a linked based binary tree following the book "data
[quoted text clipped - 9 lines]
>         int getID();
>                }

A generic approach (as a matter of style I include the redundant 'public' in
interface declarations):

 interface Node <T>
 {
  T getData();
  Integer getId(); // could parameterize ID type
 }

> class LinkBinTree {
>       BinNode root;
>       int size;
>       LinkBinTree(Object O) {
>           root = new BinNode(0);
>                             }

Avoid exorbitant indentation.  Up to four spaces per level will suffice.

  class BinNode <T> implements Node <T>
> {
    T data;
    Integer id;

>             BinNode left;
>             BinNode right;

    public BinNode( Integer iden )
>   {
>             id = iden;
>             left = null;
>             right = null;
>             data = null;

You don't need to set things to null again.

                        }

>        BinNode(Object O) {
Why do you have this constructor?

Parameters should have names that start with a lower-case letter: 'o', not 'O'.

>             id =  0;
>             left = null;
>             right = null;
>             data = null;

You don't need to set things to null or zero again.

>                         }

   public T getData() {return data;}
>        public int getID() { return id;}
>
>         void addLeft( T obj ) {
>              BinNode b = new BinNode(obj);
>              left = b;

You don't need 'b':

    left = new BinNode( obj );
>                                   }
>
>         void addRight( T obj ) {
>              BinNode r = new BinNode(obj);
>              right = r;
>                                   }

      public
>       BinNode <T> addLeft(Node <T> n, T o ) // lower-case 'o'!
           throws TreeEmptyException
>     {
>              if(!exists(n))
// braces please:
               {
                 throw new TreeEmptyException("Tree doesn't
> exists");

//"Tree doesn't exist"

               }
>              return n.addLeft( o );
> }

      public
>       BinNode <T> addRight( Node <T> n, T o ) throws TreeEmptyException{
>     if(!exists(n)) throw new TreeEmptyException("Tree doesn't
[quoted text clipped - 18 lines]
>  void boolean exists( Node <T> n ) {
>          if(Node == root) return;

You don't show a variable 'root'.

>          else {
>             if(Node

Are you searching for a certain Node, or a Node with a certain value?

 public static void boolean exists( BinNode <T> root, T value )
 {
  if ( root == null )
  { return false; }
  return (root.value == null? value == null : root.value.equals( value ))
      || exists( root.left, value ) || exists( root.right, value );
 }

Signature

Lew



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.