Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 306
  • Last Modified:

TreeNode *urgent*

Can someone gimme the TreeNode codes cuz I need to build a tree. I need the class that has method such as isLeaf, insertChild or watever etc....pls~ Thanks~

0
jtcy
Asked:
jtcy
  • 12
  • 9
  • 7
  • +1
9 Solutions
 
objectsCommented:
why not just use javax.swing.tree.DefaultMutableTreeNode
0
 
jtcyAuthor Commented:
i thought that is just an interface without any implementation?
0
 
mmuruganandamCommented:
The following links would help you in building a tree with the TreeNode.


http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html
http://javaalmanac.com/egs/javax.swing.tree/AddNode.html?l=rel


Regards,
Muruga
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
objectsCommented:
TreeNode is just an interface.
DefaultMutableTreeNode is an implementation of that interface:

0
 
jtcyAuthor Commented:
I need to implement my own.
0
 
mmuruganandamCommented:
Why you want to re-invent the wheel.  May be you can extend the DefaultMutableTreeNode and add your own functions to it.
0
 
jtcyAuthor Commented:
I have my class extends DefaultMutableTreeNode and above I have it import java.lang.*; it says cant resolve the class~
0
 
objectsCommented:
You could just grab the source code for DefaultMutableTreeNode as a starting point.

What interface do you need to implement exactly?
0
 
jtcyAuthor Commented:
actually i just need methos like addChild, isLeaf, getChildAt, etc. Whether or not it's my own is not matter but if i could implement TreeNode myself with just few of these methods would be a better choice.
0
 
objectsCommented:
>  but if i could implement TreeNode myself with just few of these methods would be a better choice.

Why exactly, surely using an already existing class would be preferable?
0
 
jtcyAuthor Commented:
i donno if i am allowed to use them....anyway, i am trying to use them. Um...which package does DefaultMutablewatever class from? I try importing java.lang.*; still cant find it
0
 
mmuruganandamCommented:
addChild, isLeaf, getChildAt and many more methods are already available in DefaultMutableTreeNode.



0
 
mmuruganandamCommented:
It is found at

javax.swing.tree.DefaultMutableTreeNode

the package that you are suppose to import is

import javax.swing.tree.DefaultMutableTreeNode;

0
 
objectsCommented:
This should get you started:


public class TreeNode
{
   private ArrayList children = new ArrayList();

   public void addChild(TreeNode child)
   {
      children.add(child);
   }

   public int getChildCOunt()
   {
      return children.size();
   }

   public TreeNode getChildAt(int index)
   {
      return (TreeNode) children.get(index);
   }

   public boolean isLeaf()
   {
      return children.size()==0;
   }
}
0
 
objectsCommented:
> which package does DefaultMutablewatever class from?

see my original comment:
javax.swing.tree.DefaultMutableTreeNode
0
 
jtcyAuthor Commented:
objects, which class should ur treeNode extend?
0
 
jtcyAuthor Commented:
does arrayList works like vector where we don need to keep its element offset? and its size gets incremented automatically?
0
 
mmuruganandamCommented:
Yes.

ArrayList is non-synchronized.  Vector is synchronized.

That is the major difference.  Otherwise, both are same.
0
 
objectsCommented:
> which class should ur treeNode extend?

doesn't need to extend anything. really depends on how you are using it.

> does arrayList works like vector where we don need to keep its element offset? and its size gets
> incremented automatically?

yes


0
 
jtcyAuthor Commented:
how do i do square root in java?
0
 
mmuruganandamCommented:
Math.sqrt(<double>);
0
 
jtcyAuthor Commented:
if a variable is int, says int distance, can i do :
distance = Math.sqrt((double) distance); ??
0
 
mmuruganandamCommented:
yes you can

distance = (int)Math.sqrt((double) distance);
0
 
jtcyAuthor Commented:
Okay, got a big trouble. For a given root node, i need to traverse it down and for every children of it, if it is a leaf node, then call a function called "evaluate(thisNode)", else just keep on traversing till its end. How can I do that?
0
 
mmuruganandamCommented:
Here is the example, using which you can traverse the whole tree....


http://javaalmanac.com/egs/javax.swing.tree/GetNodes.html?l=rel

0
 
zzynxSoftware engineerCommented:
public void evaluateAllNodes(TreeNode node) {

        if (node.isLeaf())
            evaluate(node);
   
        if (node.getChildCount() >= 0) {
            for (Enumeration e=node.children(); e.hasMoreElements(); ) {
                TreeNode n = (TreeNode)e.nextElement();
                evaluateAllNodes(n);
            }
        }
}

You call this function on your root:

    evaluateAllNode(myRoot);

0
 
jtcyAuthor Commented:
objects, could u write getParents for me please?~ i am stuck of it.
0
 
zzynxSoftware engineerCommented:
no longer interested in our input?
OK.
0
 
mmuruganandamCommented:
getParent could be a TreeNode.

public TreeNode getParent(TreeNode node)
{
    return  node.getParent();
}
0
 
jtcyAuthor Commented:
will this work? an infinite recursion?
0
 
zzynxSoftware engineerCommented:
jtcy, are you doing a "spring clean up" of all your open Q's?
Nevertheless, thanks for awarding our efforts.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 12
  • 9
  • 7
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now