2017-12-06 1 views
1

Angenommen, ich habe zwei Werte: x1 und x2.Erstellen Sie einen k-ary-Baum ohne wiederholte Werte

Mit einer einzigen Wurzel, wie alle Kombinationen von x1 und x2 mit einem k -ary-Baum zu bauen?

Beispiel:

#0 root 
    / \ 
#1 x1  x2 
    | 
#2 x2 

Auf Stufe #1 Ich habe die ersten Elemente, x1 und x2.

Auf Stufe #2 Ich habe x2, so dass die Kombination x1x2, haben aber nicht x1, weil es ein wiederholt Kombination wäre (x2x1, wir kümmern uns nicht um die Elemente hier zu bestellen).

Wenn ich mehr als zwei Elemente hätte, würde halten den Baum los, bis der Pegel auf die Anzahl der Elemente gleich minus 1.

Ich habe bereits die anfängliche #1 Ebene gebaut. aber wie erzeuge ich den Baum, ohne Kombinationen zu wiederholen? Mit anderen Worten, wie man verifiziert, wenn ich ein bestimmtes Element auf dem Baum in der performatic Weise nicht setzen sollte oder nicht. Es gibt einen bekannten Algorithmus dafür?

Zusätzliche Informationen: PHP

+0

Was ist die Aufgabe, die Sie erreichen möchten? Um alle Kombinationen eines Satzes von Elementen unabhängig von der Reihenfolge aufzulisten? Müssen Sie wirklich k-ary Baum verwenden? – justhalf

+0

@justhalf Ja, um alle Kombinationen eines Satzes von Elementen unabhängig von ihrer Reihenfolge aufzulisten. Ich brauche keine Bäume, aber es ist das erste, was mir in den Sinn kam. – Luiz

+1

Dann denke ich, dass du diese Frage stattdessen stellen solltest. Ich denke, dass Bäume dafür keine gute Lösung sein können. Die übliche Lösung ist Rekursion, wie diese: https://stackoverflow.com/questions/31695772/generating-k-combinations-lexicographically – justhalf

Antwort

1

Edit: einige Änderungen auf den Aufbau der Baum

Meine Idee ist (x1, x2,... ,xn) für n Elemente einer n-ary Baum mit. Lassen Sie root x0, dann für jeden Knoten xi(0 <= i <= n), sollten Sie alle Kinder haben xj wo (i < j <= n). Auf diese Weise können Sie alle sich nicht wiederholenden Kombinationen haben. Z.B. Für n = 3 wäre der 3-gliedrige Baum so etwas wie folgt:

root ---> x1 ---> x2 ---> x3 
      | ---> x3 
root ---> x2 ---> x3 
root ---> x3 
Verwandte Themen