So ermitteln Sie, ob es sich in PHP um einen ausgeglichenen Binärbaum handelt

醉折花枝作酒筹
Freigeben: 2023-03-11 11:48:01
nach vorne
2157 Leute haben es durchsucht

In Binärbäumen gibt es einen sogenannten ausgeglichenen Binärbaum. Heute stellen wir die Methode zur Beurteilung vor, ob der Baum ein ausgeglichener Binärbaum ist. Freunde in Not können sich darauf beziehen.

So ermitteln Sie, ob es sich in PHP um einen ausgeglichenen Binärbaum handelt

Bestimmen Sie anhand eines Binärbaums, ob es sich um einen Binärbaum mit Höhenausgleich handelt.

In dieser Frage ist ein höhenbalancierter Binärbaum definiert als: Der Absolutwert des Höhenunterschieds zwischen dem linken und dem rechten Teilbaum jedes Knotens eines Binärbaums überschreitet nicht 1.

Beispiel 1:

给定二叉树 [3,9,20,null,null,15,7]
   3
   / \
  9  20
    /  \
   15   7
Nach dem Login kopieren

gibt true zurück.

Beispiel 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4
Nach dem Login kopieren

return false .

Ideen zur Problemlösung

Das Folgende ist die grundlegendste Brute-Force-Lösungsmethode von oben nach unten. Jeder Knoten kann ein Teilbaum sein, daher müssen Sie feststellen, ob es sich um einen ausgeglichenen Binärbaum handelt. Diese Methode führt zu vielen wiederholten Berechnungen und weist eine hohe Zeitkomplexität auf.

Bottom-up-Frühblockierungsmethode: Die Idee besteht darin, eine Vorbestellungsdurchquerung des Binärbaums durchzuführen und die maximale Höhe des Teilbaums von unten nach oben zurückzugeben wird „beschnitten“ und kehrt direkt nach oben zurück.

Top-down-PHP-Code

/** 
* Definition for a binary tree node. 
* class TreeNode { 
* public $val = null; 
* public $left = null; 
* public $right = null; 
* function __construct($value) { 
    $this->val = $value; 
    } 
* } 
*/
class Solution {
    /** * @param TreeNode $root * @return Boolean */
    function isBalanced($root) {
        if ($root == null) {
            return true;
        }
        if (abs($this->getHeight($root->left) - $this->getHeight($root->right)) > 1) {
            return false;
        }
        return $this->isBalanced($root->left) && $this->isBalanced($root->right);
    }
    function getHeight($node)
    {
        if($node == NULL)
            return 0;
        return 1 + max($this->getHeight($node->left), $this->getHeight($node->right));
    }}
Nach dem Login kopieren

Bottom-up-PHP-Code:

/** 
* Definition for a binary tree node. 
* class TreeNode { 
* public $val = null; 
* public $left = null; 
* public $right = null; 
* function __construct($value) { 
    $this->val = $value; 
    } 
* } 
*/
class Solution {
    /** * @param TreeNode $root * @return Boolean */
    function isBalanced($root) {
        return $this->helper($root) >= 0;
    }
    public function helper($root){
        if($root === null){
            return 0;
        }
        $l = $this->helper($root->left);
        $r = $this->helper($root->right);
        if($l === -1 || $r === -1 || abs($l - $r) > 1) return -1;
            return max($l, $r) +1;
    }}
Nach dem Login kopieren

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob es sich in PHP um einen ausgeglichenen Binärbaum handelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:hxd.life
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage