Heim >Backend-Entwicklung >PHP-Tutorial >Verknüpfte Liste im Binärbaum
1367. Verknüpfte Liste im Binärbaum
Schwierigkeit:Mittel
Themen: Verknüpfte Liste, Baum, Tiefensuche, Breitensuche, Binärbaum
Gegeben sei eine Binärbaumwurzel und eine verknüpfte Liste mit Kopf als erstem Knoten.
Gib „True“ zurück, wenn alle Elemente in der verknüpften Liste beginnend mit dem Kopf einem Abwärtspfad entsprechen, der im Binärbaum verbunden ist, andernfalls False zurückgeben.
In diesem Zusammenhang bedeutet Abwärtspfad einen Pfad, der an einem Knoten beginnt und nach unten führt.
Beispiel 1:
Beispiel 2:
Beispiel 3:
Einschränkungen:
Hinweis:
Lösung:
Wir müssen rekursiv prüfen, ob eine verknüpfte Liste mit einem Abwärtspfad in einem Binärbaum übereinstimmen kann. Wir verwenden die Tiefensuche (DFS), um den Binärbaum zu erkunden und zu versuchen, die verknüpfte Liste vom Kopf bis zu den Blattknoten abzugleichen.
So können wir die Lösung angehen:
Lassen Sie uns diese Lösung in PHP implementieren: 1367. Verknüpfte Liste im Binärbaum
<?php // Definition for a singly-linked list node. class ListNode { public $val = 0; public $next = null; function __construct($val = 0, $next = null) { $this->val = $val; $this->next = $next; } } // Definition for a binary tree node. class TreeNode { public $val = 0; public $left = null; public $right = null; function __construct($val = 0, $left = null, $right = null) { $this->val = $val; $this->left = $left; $this->right = $right; } } class Solution { /** * @param ListNode $head * @param TreeNode $root * @return Boolean */ function isSubPath($head, $root) { ... ... ... /** * go to ./solution.php */ } // Helper function to match the linked list starting from the current tree node. function dfs($head, $root) { ... ... ... /** * go to ./solution.php */ } } // Example usage: // Linked List: 4 -> 2 -> 8 $head = new ListNode(4); $head->next = new ListNode(2); $head->next->next = new ListNode(8); // Binary Tree: // 1 // / \ // 4 4 // \ \ // 2 2 // / \ / \ // 1 6 8 8 $root = new TreeNode(1); $root->left = new TreeNode(4); $root->right = new TreeNode(4); $root->left->right = new TreeNode(2); $root->right->left = new TreeNode(2); $root->left->right->left = new TreeNode(1); $root->left->right->right = new TreeNode(6); $root->right->left->right = new TreeNode(8); $root->right->left->right = new TreeNode(8); $solution = new Solution(); $result = $solution->isSubPath($head, $root); echo $result ? "true" : "false"; // Output: true ?>
isSubPath($head, $root):
dfs($head, $root):
Für die Eingabe head = [4,2,8] und root = [1,4,4,null,2,2,null,1,null,6,8] wird der Algorithmus:
Diese Lösung prüft mithilfe von DFS effizient auf den Unterpfad im Binärbaum.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt vonVerknüpfte Liste im Binärbaum. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!