Diff for ''

Revision 1
Time:
2024-06-13 22:29
Revision 2
Author:
black
Time:
2026-04-10 18:35
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
# Binarni vyhledavaci strom - Prolog

<{ForumPost(poster="Anonymous", timestamp=2009-06-15 13:10:24)}>
Ahoj,
  
nevite, jak v prologu otestovat, zda-li je objekt korektni binarni vyhledavaci strom? Stromy jsou struktury t(LeftSubTree, Root, RighSubTree). Diky moc predem!
<{/ForumPost}>

<{ForumPost(poster="Him", timestamp=2009-06-15 18:12:22)}>


    %match(+V,+LftBnd,+RgtBnd)
    fit(V,LftBnd,RgtBnd):-((number(LftBnd),V>=LftBnd);(LftBnd == nInf)),((number(RgtBnd),V<RgtBnd);(RgtBnd == pInf)).
    
    %binTree(+Tree)
    binTree(t(L,V,R)):-binTree(t(L,V,R),nInf,pInf).
    binTree(nil,_,_).
    binTree(t(L,V,R),LftBnd,RgtBnd):-fit(V,LftBnd,RgtBnd),binTree(L,LftBnd,V),binTree(R,V,RgtBnd).
    

Snad to bude ono. Funguje to jednoduse tak, ze si drzim cestou v jakem rozmezi se musi hodnoty vrcholu pro jednotlive podstromy. Pokud se do stromu pridavaji stejne hodnoty, ktere ve stromu jiz jsou tak predikat pocita s tim, ze se davaji vzdy do praveho syna.
nInf ~ -oo
pInt ~ +oo
  
Dej vedet, jestli to resi tvuj problem ;-)
<{/ForumPost}>

<{ForumPost(poster="Anonymous", timestamp=2009-06-15 19:39:04)}>
Ahoj,
  
vypada to v pohode, diky moc. Mimochodem, psal si to sam nebo to odnekud je? Pokud za b, mohl bys mi prosim napsat, odkud?
<{/ForumPost}>

<{ForumPost(poster="Him", timestamp=2009-06-15 19:44:40)}>
Je to vlastní výroba. Ostatně je to nejpřímější způsob jak to napsat. To bys měl dát dohromady sám, ne? Nebo je na tom něco nejasného?
<{/ForumPost}>