我想在比较两种树结构时找出它们的区别。
节点将是字符串。我想捕捉它发生在树的哪个层次。
例如,查找这两棵树之间的差异:
algorithm - 比较两棵树之间差异的一些算法是什么?-LMLPHP

最佳答案

基本思想是逐级遍历这两棵树。一旦你发现,
节点不相同

节点结构不相同
意思是你发现了不同现在您可以标记级别或节点,无论您想要什么。
密码:

function getDiff(Tree root, Tree root1){
   Queue queue->push(root);
   Queue queue1->push(root1);
   level = 1;
   while(queue->size() != 0 && queue1->size() != 0){
      if(queue->size() != queue1->size()) {
            PRINT: "THE TREE AREN'T IN SAME STRUCTURE :/";
            return;
      }

      size = queue->size();
      /* traversing both trees level-by-level */
      while(size-- > 0){
           Tree temp = queue->peek();
           Tree temp1 = queue1->peek();

           queue->pop();
           queue1->pop();

            if(!temp->node != temp1->node) {
                  PROCESS: level;
            }
            if(temp->left != null && temp1->left != null) {
                queue->push(temp->left);
                queue1->push(temp1->left);
            }

            if(temp->right!= null && temp1->right!= null) {
                queue->push(temp->right);
                queue1->push(temp1->right);
            }
        }
        /* increase level */
        level += 1;
    }
}

注意:将PSEDOCODE更改为您喜爱的语言:)

关于algorithm - 比较两棵树之间差异的一些算法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57779856/

10-09 16:50