Wordt een knooppunt in een boom beschouwd als zijn eigen voorouder?

stemmen
4

Ik vraag me af wat de consensus is over de definitie van voorouder in een computer science context.

Ik vraag alleen maar omdat in Introduction to Algorithms , Second Edition, p. 259 is een beschrijving van het algoritme Tree-Successor(x)dat vreemd lijkt. Het vinden van de opvolger knooppunt x ,

[...] Als de rechter deelboom node x leeg is en x een opvolger y , dan is y het laagste voorouder van x waarvan linkerkind ook een voorouder van x .

In een binary search boom met een wortel met sleutel 2en kinderen 1en 3is de opvolger van 1haar moederonderneming 2. In dit geval is x het linkerkind van x opvolger, y . Volgens de definitie van het boek, dan x moet zijn eigen voorouder, tenzij ik mis iets.

Ik heb niets gevonden in de errata over.

De vraag is gesteld op 20/06/2010 om 04:48
bron van user
In andere talen...                            


3 antwoorden

stemmen
3

Wordt een knooppunt in een boom beschouwd als zijn eigen voorouder?

Normaal gesproken niet, voor zover ik weet. Bijvoorbeeld, in de Wikipedia pagina over binaire bomen , voorvader wordt dus als:

Als een pad bestaat van knooppunt p tot q, waarin p knooppunt dichter bij het hoofdknooppunt dan q knooppunt, dan is p een voorouder van q en q is een afstammeling van p.

Maar blijkbaar definitie van die tekst boek voorouder is zodanig dat een knooppunt is zijn eigen voorouder. Deze definitie is niet precies intuïtief, maar een schoolvoorbeeld is vrij om zijn eigen definities in te voeren voor de terminologie die het gebruikt. Misschien is deze definitie vereenvoudigt enkele van de bijbehorende beschrijvingen / stellingen / etc.

antwoordde op 20/06/2010 om 05:14
bron van user

stemmen
-1

Nee, een knooppunt is geen voorouder van zichzelf. Volgens mij moet zijn: als de rechter deelboom node x leeg is en x een opvolger y, dan is y de laagste voorouder van x waarvan linkerkind is either x or an ancestor of x.maar de code die in het boek zogenaamd behandeling van zulke soort zaken.

antwoordde op 20/06/2010 om 05:23
bron van user

stemmen
10

Het is slechts een kwestie van definitie, maar in dit geval, ja . CLRS definieert een voorouder van x als elk knooppunt op het unieke pad vanaf de wortel naar x, die per definitie omvat x.

De zin fragment u geciteerd begint door te vermelden oefening 12,2-6 op de volgende pagina, die specificeert dit:

(Bedenk dat ieder knooppunt zijn eigen voorouder.)

:-)

antwoordde op 20/06/2010 om 05:33
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more