Mit SQL möchte ich der Baumstruktur bis zum letzten Blatt folgen. Baum = 1 und Knoten = 2; Baum = 1 und Knoten = 3; Baum = 1 und Knoten = NULL (kumulative Wahrscheinlichkeit); Baum = 2 und Knoten = 4; Baum = 2 und Knoten = 5; Baum = 2 und Knoten ist null (kumulative Wahrscheinlichkeit); Baum = 3 und Knoten = 6; Baum = 3 und Knoten ist null (kumulative Wahrscheinlichkeit); Baum = 4 und Knoten ist null (kumulative Wahrscheinlichkeit); Baum = 5 und Knoten ist null (kumulative Wahrscheinlichkeit); Baum = 6 und Knoten ist Null (kumulative Wahrscheinlichkeit);Die Höhe des Baumes finden
-1
A
Antwort
0
Wenn Sie Daten wie folgt organisieren können Sie die folgende
with TREETAB as (
select '1' treenode, '2' nodeval from dual
union all
select '1' treenode, '3' nodeval from dual
union all
select '1' treenode, 'leaf1' nodeval from dual
union all
select '2' treenode, '4' nodeval from dual
union all
select '2' treenode, '5' nodeval from dual
union all
select '2' treenode, 'leaf2' nodeval from dual
union all
select '3' treenode, '4' nodeval from dual
union all
select '3' treenode, 'leaf3' nodeval from dual
union all
select '4' treenode, 'leaf4' nodeval from dual
union all
select '5' treenode, 'leaf5' nodeval from dual
union all
select '6' treenode, 'leaf6' nodeval from dual
)
select *
from (SELECT t.*, CONNECT_BY_ISLEAF Leaf,
SYS_CONNECT_BY_PATH(nodeval, '/') "Path", level
FROM TREETAB t
start with t.treenode = 1
CONNECT BY PRIOR t.nodeval = to_char(t.treenode))
where Leaf = 1
order by treenode;
tun Wenn brauchen keine detaillierten Informationen über Baum, Blatt und einem Pfad, können Sie einfach überprüfen, was es treenode
für nodeval
nicht gleichwertig ist wie dies
with TREETAB as
(select '1' treenode, '2' nodeval
from dual
union all
select '1' treenode, '3' nodeval
from dual
union all
select '1' treenode, 'leaf1' nodeval
from dual
union all
select '2' treenode, '4' nodeval
from dual
union all
select '2' treenode, '5' nodeval
from dual
union all
select '2' treenode, 'leaf2' nodeval
from dual
union all
select '3' treenode, '4' nodeval
from dual
union all
select '3' treenode, 'leaf3' nodeval
from dual
union all
select '4' treenode, 'leaf4' nodeval
from dual
union all
select '5' treenode, 'leaf5' nodeval
from dual
union all
select '6' treenode, 'leaf6' nodeval from dual)
select *
from TREETAB t
where not exists
(select t.treenode from TREETAB t2 where t2.treenode = t.nodeval)
+0
Entschuldigung, ich verstehe dich nicht klar, dass Baumzustand ist, der Code oben unabhängig von Baumlänge. Benutzte Daten sind nur für Beispiel. – Seyran
0
die Wahrscheinlichkeiten Unter der Annahme, über Sie sprechen, ist eine gleiche Wahrscheinlichkeit für jeden Zweig dann:
WITH data (tree, knot) AS (
SELECT 1, 2 FROM DUAL UNION ALL
SELECT 1, 3 FROM DUAL UNION ALL
SELECT 1, NULL FROM DUAL UNION ALL
SELECT 2, 4 FROM DUAL UNION ALL
SELECT 2, 5 FROM DUAL UNION ALL
SELECT 2, NULL FROM DUAL UNION ALL
SELECT 3, 6 FROM DUAL UNION ALL
SELECT 3, NULL FROM DUAL UNION ALL
SELECT 4, NULL FROM DUAL UNION ALL
SELECT 5, NULL FROM DUAL UNION ALL
SELECT 6, NULL FROM DUAL
),
probabilities (tree, knot, probability) AS (
SELECT tree, knot, 1/COUNT(1) OVER (PARTITION BY tree) FROM data
),
cumulative_probabilities (tree, knot, probability, path) AS (
SELECT p.*, '/' || tree
FROM probabilities p
WHERE tree = 1
UNION ALL
SELECT p.tree, p.knot, p.probability * cp.probability, cp.path || '/' || p.tree
FROM probabilities p
INNER JOIN
cumulative_probabilities cp
ON (p.tree = cp.knot)
)
SELECT *
FROM cumulative_Probabilities
WHERE knot IS NULL;
Ausgang:
TREE KNOT PROBABILITY PATH
---- ---- ----------- ------
1 0.333333333 /1
3 0.166666667 /1/3
2 0.111111111 /1/2
6 0.166666667 /1/3/6
4 0.111111111 /1/2/4
5 0.111111111 /1/2/5
Verwandte Themen
- 1. Tiefe eines Baumes finden?
- 2. Maximale Höhe eines binären Baumes
- 3. Durchmesser des binären Baums rekursiv mit der Höhe des Baumes?
- 4. Was ist die Definition für die Höhe eines Baumes?
- 5. Wie man eine Höhe eines Baumes berechnet
- 6. Rendering Thread des visuellen Baumes
- 7. Ausgabe des Baumes in Eingabeaufforderung
- 8. Finden Sie die Höhe des geöffneten Panel Akkordeon mit JQuery
- 9. Die Höhe eines Mehrwegbaums finden
- 10. zu geordneten Sequenz Werte eines Baumes Blatt ändern, während die Struktur des Baumes Erhaltung
- 11. Wie bekommt man die Knotenfolge des phylogenetischen Baumes in R?
- 12. Checking Länge des Baumes Linq mit
- 13. Konfus - Höhe des Binärbaums
- 14. Wie die TextFeld-Höhe des Unterberichts als die Höhe des textField des Hauptberichts erhöht wird?
- 15. Die Höhe des Twitter-Bootstrap-Eingabefelds verringern?
- 16. Finden von Höhe in Swift
- 17. die Geschichte eines Baumes hackerrank Lösung Fehler
- 18. Oracle 9i höchstes Mitglied des Baumes mit bestimmtem Kind bekommt
- 19. Wie findet man den Typ des unsymmetrischen AVL-Baumes?
- 20. HTML-Dokument Höhe nicht auf die volle Höhe des Ansichtsfenster
- 21. Den längsten Zweig eines Baumes in Neo4j finden
- 22. Traversal eines Baumes, um einen Knoten zu finden
- 23. Wurzel eines Baumes in einem gerichteten Graphen finden
- 24. wenn der Durchmesser eines Baumes Berechnung warum Höhe allein Berechnung nicht ausreicht
- 25. Wie kann ich die Höhe des HTML-Objekts auf die Höhe des Fensters einstellen?
- 26. Ändern Sie die Höhe des appWidget programmatisch?
- 27. Wie ändert man die Höhe des Textfelds?
- 28. Wie die Höhe des Titels gleich css
- 29. Warum ist die Höhe des Etiketts Null?
- 30. Wie finden Sie die Höhe von Objekten, denen ein Bild gegeben wurde?
nicht sicher, vielleicht [hierarchische Abfragen] (https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries003.htm#SQLRF52315) helfen kann Sie. Wenn Sie Ihr Datenorganisationsbeispiel, Tabellenstruktur oder etwas anderes angeben, wird es einfacher, die Lösungswege zu verstehen. – Seyran
Was meinst du mit "Wahrscheinlichkeit nehmen"? Welche Wahrscheinlichkeit? Wie wird es berechnet? – mathguy
In Ihrem Beispiel Wahrscheinlichkeit ist nur Blatt Wert, so Abfrage in meiner Antwort berechnet ist in Ordnung, wenn einen echten Baum der Wahrscheinlichkeiten bauen, dann sollte jeder Knoten Wahrscheinlichkeit haben, Antwort von @ MT0 zeigt, dass, wenn ich seinen Code richtig verstanden er angenommen Wahrscheinlichkeit, zu jedem Knoten zu gehen, ist gleich, und wenn keine anderen Bedingungen definiert sind, ist es auch richtig. – Seyran