LinkEst-ce que ce morceau de code Leftist Tree de Wikipedia est correct?
public Node merge(Node x, Node y) {
if(x == null)
return y;
if(y == null)
return x;
// if this was a max height biased leftist tree, then the
// next line would be: if(x.element < y.element)
if(x.element.compareTo(y.element) > 0) {
// x.element > y.element
Node temp = x;
x = y;
y = temp;
}
x.rightChild = merge(x.rightChild, y);
if(x.leftChild == null) {
// left child doesn't exist, so move right child to the left side
x.leftChild = x.rightChild;
x.rightChild = null;
x.s = 1;
} else {
// left child does exist, so compare s-values
if(x.leftChild.s < x.rightChild.s) {
Node temp = x.leftChild;
x.leftChild = x.rightChild;
x.rightChild = temp;
}
// since we know the right child has the lower s-value, we can just
// add one to its s-value
x.s = x.rightChild.s + 1;
}
return x;
}
Ce qui me fait poser cette question est:
if(x.element.compareTo(y.element) > 0) {
// x.element > y.element
Node temp = x;
x = y;
y = temp;
}
est-ce pas tout simplement pas le travail va, car les références ne sont commutées à l'intérieur de la méthode?
Eh bien, ce n'est certainement pas * correct *. – David
Arbre de gauche? Je n'avais aucune idée que les structures de données étaient devenues politisées. Il n'y a rien de sûr dans notre société? – duffymo