Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jul 31, 1999

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
 
Comment and Contribute

 

 

 

 

 


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

 

 

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