[Python-de] binaerer Baum in Python

Albert Hermeling Albert.Hermeling at t-online.de
Sat Oct 27 14:58:35 EDT 2001


Am Samstag, 27. Oktober 2001 02:55 schrieben Sie:

Hallo,

> Beachte, dass das tolle an binaeren Baeumen ist, dass man einen bereits
> eingefuegten
> Knoten nicht mehr in seiner Position zu veraendern braucht... 
Der Knoten wird ja auch nicht in der Postition verändert. :-)

so wie ich
> Deinen An-
> satz verstanden hatte, musst Du um die Listen so zu verschachteln Werte
> ueber-
> schreiben... anders:
Also das was überschrieben wird sind nur die Werte None und die dienen 
ausschließlich als Platzhalter, wenn der Knoten nur einen, oder gar kein 
Blatt hat. Im letzten Fall währe er dann selber ein Blatt.


 wo ist der Name des Referenzelementes das aktuellen
> Teil-
> baums. <hmmm. haette ich jetzt wahrscheinlich auch nicht verstanden.
Wahrscheinlich meinst du mit Referenzelement das Wort "sein" wenn wir ganz 
von vorne anfangen. Ich dachte man könnte das  Referenzelement als Listenname 
gebrauchen. Beispiel:

sein=["None","None"] 

somit währe "sein" das Referenzelement  und das geht so ja nicht.  

Rechtes Blatt (bei Dir left_leaf,) und Linkes Blatt (bei Dir right_leaf) sind 
bei mir per Difiniton die Indizes 0 und 1 (bei Dir 1 und 2) Der Vorteil der 
Platzhalter ist der, dass ich jetzt in allen  Indizes ab 3, 4, 5... Werte 
speichern kann, diese kann ich dann leicht auffinden in dem ich das 
Referenzelement als Schüssel gebrauche :-)). Ups ich hoffe das war jetzt 
nicht zu abgedreht ;-)).

Deine Idee das Referenzelement als Bestandteil der Liste zu speichern ist 
eine gute Idee darüber werde ich mal nachdenken.


> deshalb ein beispiel fuer meine listenstruktur>:
>
> [<ident>, left_leaf, right_leaf]
>
> None
> ["sein", None, None]
> ["sein", ["oder", None, None], None]

solte bei mir ungefähr so aussehen:

None
sein=["None","None"]
sein=[oder=["None","None"],"None"]
Dabei würde die >Liste< "oder" im Indizes 0 gespeichert und der Indizes 1 
würde noch frei als - None makiert - sein. Das geht so ja nicht. Ich dachte 
da noch man könnte als Referenzelement den Namen der Liste nehmen.

Richtig müsste es so sein
None
["sein","None","None"]		# Lehrer Baum
["sein",["oder","None",None"],"None"]	# Baum mit einem Blatt

> Hoffe das stimmt alles so... ist schon verdammt spaet ;-) - Beschwerden
> dann bitte an mich!
Keine Angst ich beschwere mich schon nicht währe ja noch schöner Du schlägst 
Dir die Nacht um die Ohren und ich beschwere mich ;-))). 


> Habe das ganze schnell mal getestet:

Habe mir Dein Listing angeschaut. Schon so ziemlich das zu sein was ich mir 
überlegt habe was ich noch nicht verstandenen habe ist folgendes: Erzeugst Du 
für jedes zu speichernde Wort ein eigenes Objekt? oder wo lässt Du die Wörter?

> > einem Baum meines Erachtens unnötig ist.
>
> naja - ob es sinnvoll ist seine informations-entities nicht eindeutig zu
> machen ist eine
> andere geschichte. 
Warum nicht eindeutig? 


erst einmal ist es in einem baum moeglich mehrere knoten
Gut das glaube ich Dir aber über den Sinn lässt sich streiten. Wenn ich mir 
vorstelle das der Baum nicht 10 nicht 100 sondern einige 1000 Elemente 
enthält ist man froh wenn man keine Doppelten hat.

> vielleicht war das etwas weit gegriffen. mir ging es darum, dass du nicht
> immer
> strings als objekte verwenden wirst, sondern evt etwas wie autokennzeichen,
> die einer eigenen ordnung gehorchen koennen (nicht unbedingt
> lexikografisch).
Gut das verstehe ich jetzt. Einfach gesagt es kommt drauf an was man wie 
einordnen möchte, daher ist es besser diesen Algorithmus in einer Extra 
Klasse auszulagern. Richtig gedacht? :-)

> auf wie der "magische Satz" einsortiert in deiner datenstruktur aussieht.
Das könnte ich Dir sogar als Zeichnung zukommen lassen. Natürlich nur dann 
wenn Du das möchtest.

Ach übrigens der "magische Satz" stammt von Shakespeares Hamlet :-))

mfg

Albert



More information about the Python-de mailing list