🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #553

Re: Scheme

#553
From: Paweł 'Pasza' Ostrowski
Date: Sun, 11 Jan 2004 10:56
63 lines
2953 bytes
"Daniel Zet" <ldexp@gazeta.SKASUJ-TO.pl> writes:

> Mam prośbę. Oto program w języku scheme budujący drzewo binarne z
> uporzadkowanymi elementami tzn po lewej stronie(lewe poddrzewo) sa liczby
> mniejsze od korzenia po prawej wieksze.
>
>
>
> (define (build-tree l)
>
>    (build-tree1 l '()))
>
> (define (build-tree1 l t)
>    (if(null? l)
>      t
>      (build-tree1 (cdr l) (insert-tree(car l) t))))
>
> (define(insert-tree d t)
>    (if(null? t)
>     (build-node d '() '())
>     (if (< d (node t))
>        (build-node(node t) (insert-tree d (l-tree t)) (r-tree t))
>        (if (> d(node t))

               ^^^^^
Tu ma być spacja. Czyli (> d (node t))

>           (build-node(node t) (l-tree t)(insert-tree d (r-tree t)))
>           (build-node(node t) (insert-tree d (l-tree t))(r-tree t ))))))
> (define (build-node d l1 l2)
>       (list d l1 l2))
>
> czy ktoś może mi pomóc albo dać jakąś wskazówkę jak przerobić taki program
> by sprawdzał on czy już istniejące drzewo binarne ma w węzłach liczby
> całkowite i czy jest uporządkowany (po lewej mniejsze itd)
>  z góry dziękuję.

Nie znam scheme, ale piszę w common lispie. Program, który zamieściłeś
nie jest kompletny. Brakuje funkcji node, l-tree i r-tree (chyba, że
nie zamieściłeś bo są oczywiste, wtedy wskazówka 1 odpada).

1) Jeśli to ma działać, to proponuję zacząć od uzupełnienia programu
powyżej.

(define (node t)
  (car t))

Do napisanie zostają l-tree, r-tree.

2) Bardziej dotyczy tego o co pytałeś: poczytaj o drzewach bst. Musisz
zobaczyć czy lewy węzeł jest mniejszy, lewe poddrzewo dobre, prawy
węzeł większy, prawe poddrzewo dobre.

   Inny sposób (a właściwie ten sam), przejść infiksowo po drzewie
wrzucając wierzchołki do listy. Powinienneś otrzymać listę
posortowaną (to już łatwo jest sprawdzić).

Jak już będziesz umiał chodzić po drzewach :), to pewnie poradzisz
sobie z tymi liczbami całkowitymi.

-- 
Pasza - (format t "~36R!~%" 1807251954038279265358)
pasza (at) zodiac.mimuw.edu.pl
Technical Details
Message-ID: <m3smim69ek.fsf@acn.waw.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
References: <btq781$4hr$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
From: Paweł 'Pasza' Ostrowski <pasza@acn.waw.pl>
Newsgroups: pl.comp.lang.funkcyjne
Subject: Re: Scheme
Date: Sun, 11 Jan 2004 11:56:35 +0100
Organization: MIMUW
Lines: 63
Message-ID: <m3smim69ek.fsf@acn.waw.pl>
References: <btq781$4hr$1@inews.gazeta.pl>
NNTP-Posting-Host: zodiac.mimuw.edu.pl
Mime-Version: 1.0
X-Trace: kenny.mimuw.edu.pl 1073818404 4180 10.1.1.1 (11 Jan 2004 10:53:24 GMT)
X-Complaints-To: abuse@news.mimuw.edu.pl
NNTP-Posting-Date: Sun, 11 Jan 2004 10:53:24 +0000 (UTC)
Cancel-Lock: sha1:LdW6JHLK6rxFe7s5DfFXqLzinWg=
User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit