Сравнение деревьев в виде дерева - PullRequest
0 голосов
/ 26 февраля 2010

Я хочу иметь возможность перебирать дерево и сравнивать узлы одного дерева с узлами другого дерева того же формата.

EX: Есть пять категорий.

1 - 5. Все они статичны и идентичны для обоих деревьев.

В 1. Все статические значения. Поэтому мне нужно просто сравнить значения узлов там.

В 2. Это происходит от объекта KVP, и поэтому они могут различаться с точки зрения количества узлов и их одиночных дочерних элементов.

в 3. То же, что в 2, но есть 5 детей

В 4-5 такие же, как 1.

Я думал о зацикливании в деревьях и о разном цикле for для каждой категории и проверке, чтобы узлы содержали одинаковые значения.

Динамический для 2 и 3 Я бы сделал что-то одно и то же, но сначала проверь размер, а затем перебери, если размер одинаков.

Если я найду разницу, я бы изменил цвет этих узлов обратно.

Это лучший метод для меня?

Ответы [ 2 ]

1 голос
/ 26 февраля 2010

Я не думаю, что у вас есть большой выбор, кроме как сделать разные алгоритмы сравнения, основанные на данных, которые в дереве, так как кажется, что ваши узлы симметрично отличаются в зависимости от того, где они находятся в дереве.

0 голосов
/ 26 февраля 2010

Так как я знал глубину ... я сделал это:

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...