TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
 Specialized Dev Zones Research Center eBook Library .NET Java C++ Web Dev Architecture Database Security Open Source Enterprise Mobile Special Reports 10-Minute Solutions DevXtra Blogs Slideshow

Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jul 31, 1999

### WEBINAR:On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning

# GetNodeRelationship - Check if two nodes are relatives

``````' Returns a value >0 if Node1 is a parent (or grandparent) of Node2
' Returns a value <0 if Node1 is a child (or grandchild) of Node2
'   in both cases the number reflects the number of levels
'   between the two nodes
' Returns 0 if the two Nodes are the same or
'   if they belong to different subtrees

Function GetNodeRelationship(ByVal Node1 As Node, _
ByVal Node2 As Node) As Integer

If Node1 Is Node2 Then
' this is the simplest case
Exit Function
ElseIf Len(Node1.FullPath) > Len(Node2.FullPath) Then
' if the two nodes belong to the same subtree, then
' Node1 is a (grand)child of Node2
If InStr(Node1.FullPath, Node2.FullPath) = 1 Then
' do the loop only if the two nodes appear to
' belong to the same subtree
' check that the relationship really exists
Do Until (Node1.Parent Is Nothing)
Set Node1 = Node1.Parent
GetNodeRelationship = GetNodeRelationship + 1
If Node1 Is Node2 Then Exit Function
Loop
End If
Else
' if the two nodes belong to the same subtree, then
' Node1 is a (grand)parent of Node2
If InStr(Node2.FullPath, Node1.FullPath) = 1 Then
' do the loop only if the two nodes appear to
' belong to the same subtree
' check that the relationship really exists
Do Until (Node2.Parent Is Nothing)
Set Node2 = Node2.Parent
GetNodeRelationship = GetNodeRelationship - 1
If Node1 Is Node2 Then Exit Function
Loop
End If
End If

' Nodes belong to different subtrees
GetNodeRelationship = 0

End Function
``````
Francesco Balena

 Submit a Tip Browse "Application Design" Tips Browse All Tips
Comment and Contribute

(Maximum characters: 1200). You have 1200 characters left.

Thanks for your registration, follow us on our social networks to keep up-to-date