我想在比较两种树结构时找出它们的区别。
节点将是字符串。我想捕捉它发生在树的哪个层次。
例如,查找这两棵树之间的差异:
最佳答案
基本思想是逐级遍历这两棵树。一旦你发现,
节点不相同
或
节点结构不相同
意思是你发现了不同现在您可以标记级别或节点,无论您想要什么。
密码:
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/