Re: Node/Tree Data Structure Needed
Brian Bagnall wrote:
Hi,
I'm looking for a data type that will store a group of x,y Point objects. It's
a series of nodes, which in the end is the same as a branching tree structure.
Here goes. I am sure it has bunch of problems and that the experts will
frown. At least I have got the Node <T extends Node<T>> thing right, I
think. Take it for what it is worth...
import java.util.Set;
import java.util.HashSet;
abstract class Node<T extends Node<T>>
{
Node parent;
Set<Node> childs = new HashSet<Node>();
boolean addChild(Node<T> n) {
n.setParent(this, 0);
return addChild(n, 0);
}
boolean setParent(Node<T> n) {
setParent(n, 0);
return n.addChild(this, 0);
}
boolean addChild(Node<T> n, int unused) {
return childs.add(n);
}
void setParent(Node<T> n, int unused) {
parent = n;
}
}
class Point extends Node<Point>
{
int _x, _y;
Point(int x, int y){
_x = x;
_y = y;
}
public String toString() {
StringBuffer retVal = new StringBuffer("{Point:"
+ System.identityHashCode(this) +
"{_x:" + _x + "}{_y:" + _y + "}{parent: "
+ System.identityHashCode(parent) + "}{childs{");
for (Node n: childs) {
retVal.append(n.toString());
}
retVal.append("}}");
return retVal.toString();
}
}
class Employee extends Node<Employee> {
String _name;
Employee(String name)
{
_name = name;
}
}
class NodeMain {
public static final void main(final String[] args) {
Point p = new Point(10,10);
p.addChild(new Point(20,20));
Point p2 = new Point(11,11);
p2.setParent(p);
System.out.println(p);
System.out.println(p2);
Employee e = new Employee("hemal");
// e.setParent(p2); // does not compile
}
}