2016-07-29 10 views

Antwort

-1

Haben Sie so etwas wie dieses benötigen:

public static int hasChildren(Node t) { 
    if (t.left == null && t.right == null){ 
     return 0; 
    } else if (t.left != null && t.right != null){ 
     return 2; 
    } else { 
     return 1; 
    } 

} 
3

Sie suchen eine Bedingung suchen, der wahr ist, wenn left und right beide null sind oder wenn sie beide nicht null sind. Dies kann wie dieser

if (t.left == null && t.right == null) { 
    return true; 
} 
if (t.left != null && t.right != null) { 
    return true; 
} 
return false; 

wie diese

if ((t.left == null && t.right == null) 
|| (t.left != null && t.right != null)){ 
    return true; 
} 
return false; 

ähnliche

return (t.left == null && t.right == null) 
    || (t.left != null && t.right != null); 

oder für ernsthafte Geeks ausgedrückt werden, wie folgt aus:

return (t.left == null) == (t.right == null); 

Der letzte Ausdruck garantiert einige Diskussion, weil ich t vergleicht left und right mit null und vergleicht dann die Ergebnisse dieser beiden Vergleiche untereinander, um das Endergebnis zu erhalten.

Um zu sehen, ob alle Knoten im Baum 0 oder 2 Kinder hat man es rekursiv zu tun haben würde:

public static boolean isLeafOrHasTwoChildren(Node t) { 
    // Both nulls 
    if (t.left == null && t.right == null) { 
     return true; 
    } 
    // One is null, the other one is not null 
    if (t.left == null || t.right == null) { 
     return false; 
    } 
    // Recurse down the tree 
    return isLeafOrHasTwoChildren(t.left) 
     && isLeafOrHasTwoChildren(t.right); 
} 
+0

kein Problem. Ich habe noch eine weitere Frage, es tut mir leid, ich möchte nur meine Fragen verstehen. Was ist, wenn ein Knoten mit 2 Kindern nur dann gültig ist, wenn (Größe-von-größer-Kind <= Größe-von-kleiner-Kind * 3)? Müsstest du Max und Min eines Knotens finden? – yummyyenni

+0

@yummyyenni Das Problem basierend auf Baumgrößen ist viel schwieriger. Sie sollten besser Zahlen in den Knoten speichern, um zu vermeiden, dass sie ständig neu berechnet werden. Vielleicht möchten Sie zuerst versuchen, dies zu lösen, und dann eine weitere Frage stellen, wenn die Lösung nicht funktioniert. – dasblinkenlight