2010-02-25 57 views
0

我希望能夠遍歷一棵樹並將一棵樹的節點與另一棵具有相同格式的樹的節點進行比較。在樹狀圖中比較樹

EX:有五個類別。

1 - 5。兩棵樹之間都是靜態的且相同的。

In 1.所有靜態值。所以我需要比較那裏的節點的值。

在2。這是來自一個KVP對象等等這些可以是節點的數量的術語和它們的單子女不同。

在3.同2,但也有5個孩子

在4-5是相同1.

我想在樹上循環和具有不同的for循環爲每個類別的並檢查節點包含相同的值。

動態一個2和3我會做同樣的事情,而是通過如果尺寸相同的檢查規模第一,然後循環。

如果我發現一個區別,我會改變那個節點的背色。

這對我來說是最好的方法嗎?

回答

1

我不認爲你有多少選擇的餘地,但做基於數據不同的比較算法,在樹中,因爲它似乎是你的節點symantically不同,這取決於它們在樹枝上,。

0

自從我認識的深度...我這樣做:

For h As Integer = 0 To tree1.Nodes(0).Nodes.Count - 1 
     For i As Integer = 0 To tree1.Nodes(0).Nodes(h).Nodes.Count - 1 
      For j As Integer = 0 To tree1.Nodes(0).Nodes(h).Nodes(i).Nodes.Count - 1 

       If tree1.Nodes(0).Nodes(h).Nodes(i).Text <> _ 
         tree2.Nodes(0).Nodes(h).Nodes(i).Text Then 
        tree2.Nodes(0).Nodes(h).Nodes(i).BackColor = Color.Red 
        tree2.Nodes(0).Nodes(h).Nodes(i).Nodes(j).Expand() 
        tree2.Nodes(0).Nodes(h).Nodes(i).Expand() 
        tree2.Nodes(0).Nodes(h).Expand() 
        tree2.Nodes(0).Expand() 

        tree1.Nodes(0).Nodes(h).Nodes(i).BackColor = Color.Red 
        tree1.Nodes(0).Nodes(h).Nodes(i).Nodes(j).Expand() 
        tree1.Nodes(0).Nodes(h).Nodes(i).Expand() 
        tree1.Nodes(0).Nodes(h).Expand() 
        tree1.Nodes(0).Expand() 


       ElseIf tree1.Nodes(0).Nodes(h).Nodes(i).Nodes(j).Text <> _ 
        tree2.Nodes(0).Nodes(h).Nodes(i).Nodes(j).Text Then 
        tree2.Nodes(0).Nodes(h).Nodes(i).Nodes(j).BackColor = Color.Red 
        tree2.Nodes(0).Nodes(h).Nodes(i).BackColor = Color.Red 
        tree2.Nodes(0).Nodes(h).Nodes(i).Nodes(j).Expand() 
        tree2.Nodes(0).Nodes(h).Nodes(i).Expand() 
        tree2.Nodes(0).Nodes(h).Expand() 
        tree2.Nodes(0).Expand() 

        tree1.Nodes(0).Nodes(h).Nodes(i).Nodes(j).BackColor = Color.Red 
        tree1.Nodes(0).Nodes(h).Nodes(i).BackColor = Color.Red 
        tree1.Nodes(0).Nodes(h).Nodes(i).Nodes(j).Expand() 
        tree1.Nodes(0).Nodes(h).Nodes(i).Expand() 
        tree1.Nodes(0).Nodes(h).Expand() 
        tree1.Nodes(0).Expand() 
       End If 
      Next 

     Next 
    Next