2017-01-13 6 views
1

Hallo Ich stieß auf einen Code, um die maximale Höhe eines binären Baumes zu finden. In diesem Code gibt es eine +1 in der Return-Anweisung?Maximale Höhe eines binären Baumes

public int maxDepth(TreeNode root) { 
     if (root == null) { 
      return 0; 
     } 
     return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; 
    } 
+0

Um den Tiefenwert zu akkumulieren, wenn die rekursive Logik abfällt, bis die Blätter des Baums – janos

+0

Ein Knoten haben zwei Unterbaum, links und rechts. Die Höhe eines Knotens ist die Höhe von links oder rechts, je nachdem, welcher Wert höher ist, plus dem Knoten selbst, also +1. Es sollte ziemlich geradlinig sein. Zum Beispiel gibt es einen Knoten. Der linke Baum hat eine Höhe von 10, der rechte Baum eine Höhe von 7. Dann ist die Höhe des Knotens selbst 10 plus 1 weitere Ebene für sich selbst, was 11 ergibt –

Antwort

2

Wenn nicht, wäre das Ergebnis immer 0.

Die maximale Höhe eines binären Baum ist die maximale Größe des Kindes eine größere max Höhe (das ist der Math.max(maxDepth(root.left), maxDepth(root.right)) Teil) + 1 für die Wurzel des Baumes.

1

Betrachten Sie einen Baum, der aus einem einzelnen Wurzelknoten besteht. Dann würde die folgende Anweisung return 1 zurückkehren, das ist, was wir erwarten:

return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; 
return Math.max(0, 0) + 1; 
return 1; 

Als Ihr Basisfall zeigt, wird ein leerer Baum würde eine Höhe von Null hat, und Sie können bis zu größeren Bäume Höhe mit Induktion bauen .

Verwandte Themen