find path from one tree node to another tree node

P

Peter Mueller

Hello,

I have a non binary tree and looking for a solution to find the path
between two given nodes (not just leaves).
Is there a class in the Java class library that provides the
functionality already? If not, can someone
recommend a library. A description of the algorithm would also help.

Thanks,
Peter
 
S

Stefan Ram

Peter Mueller said:
I have a non binary tree and looking for a solution to find the path
between two given ¯¯¯¯¯¯¯¯

Sometimes, there are /several/ paths between two points. But
you surely can go up to the root and then down to the other
point. (The last path can be constructed by going up to the
root from that other point.)

If you find another common ancester by this, you even can take
an abbreviation.

However, there will not be any path if the tree is empty.
 
L

Lars Enderin

Stefan Ram skrev:
Sometimes, there are /several/ paths between two points. But
you surely can go up to the root and then down to the other
point. (The last path can be constructed by going up to the
root from that other point.)

If you find another common ancester by this, you even can take
an abbreviation.

ITYM shortcut, not abbreviation.
 
P

Peter Mueller

Stefan Ram skrev:




ITYM shortcut, not abbreviation.

Hello Stefan,

I wrote a tree class realizing this method. Works fine for me.
Thank for the hint.

Peter
 
L

Lasse Reichstein Nielsen

Sometimes, there are /several/ paths between two points.

Not in a tree. Unless you allow going back and forth along the
same edge as part of a path (i.e., visiting the same node
twice), there is exactly one path between any two node.
However, there will not be any path if the tree is empty.

Nor will there be any nodes, and since the question was on how
to find a path between two nodes, we know the tree isn't empty.

Apart from that, the solution is fine. Trace a path from each node
to the root. Then find the lowest node that is on both paths and
make a path from one node to that node, and from there to the other node.

If your tree keeps information about the depth of each node in the node,
then you won't have to trace the paths all the way to the root, but can
compare nodes at the same lavel until the paths meet.

/L
 
S

Stefan Ram

Lasse Reichstein Nielsen said:
Not in a tree. Unless you allow going back and forth along the
same edge as part of a path (i.e., visiting the same node
twice), there is exactly one path between any two node.

This indeed is allowed for a path - otherwise it would be a
called a »simple path«. (Sometimes »simple« might be omitted,
when it can be deduced from the context. This might have been
possible in the case of the OP.)

A tree, then can be /defined/ as a graph, where any two points
can be connected by a unique /simple path/.
 
S

Stefan Ram

Supersedes: <[email protected]>

Lasse Reichstein Nielsen said:
Not in a tree. Unless you allow going back and forth along the
same edge as part of a path (i.e., visiting the same node
twice), there is exactly one path between any two node.

This indeed is allowed for a path - otherwise it would be a
called a »simple path«. (Sometimes »simple« might be omitted,
when it can be deduced from the context. This might have been
possible in the case of the OP.)

A tree, then can be /defined/ as an undirected simple graph,
where any two points can be connected by a unique /simple path/.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,535
Members
45,007
Latest member
obedient dusk

Latest Threads

Top