比较树视图中的树木

时间:2010-02-25 23:45:36

标签: vb.net treeview compare

我希望能够遍历树并将一个树的节点与另一个格式相同的树中的节点进行比较。

EX:有五个类别。

1 - 5.两棵树之间都是静态的和相同的。

In 1.所有静态值。所以我需要比较那里节点的值。

In 2.这来自KVP对象,因此在节点数量和单个子节点方面可能有所不同。

在3.与2相同,但有5个孩子

4-5与1相同。

我在考虑在树中循环并为每个类别设置不同的for循环,并检查节点是否包含相同的值。

动态的2和3我会做同样的事情,但先检查大小然后循环,如果大小相同。

如果我发现差异,我会改变那些节点的颜色。

这对我来说是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

我认为你没有多少选择,只能根据树中的数据做不同的比较算法,因为看起来你的节点在语法上会有所不同,具体取决于它们在树中的位置。

答案 1 :(得分: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