suchen
HeimBackend-EntwicklungPHP-Tutorial求教大家一个小算法有关问题

求教大家一个小算法问题
树状流程图:


表结构


这个表结构就是每个节点都有三个子节点,left、center、right,要求就是在适当的位置插入节点,插入的规则就是:假设从id=1开始,然后找出其下的三个子节点,如果三个子节点都存在,就分别查找三个子节点的子节点。直到所在的子节点没有数据,就可以插入了
        
        
具体流程走法:如树状图:id = 1开始查找,查找其子节点,有2 ,3, 4,都是存在的,然后在查找2的子节点,5,6,7也都是存在的,然后在查找3的子节点,只有8,然后就可以在3的中间的子节点插入了。当然数据越多,查找的也会越多。一直在想,没想出来,急的很,希望大神给个具体代码的算法,万分感谢。
------解决思路----------------------
以前在网上找到的php二叉树,我改了一点,变成三叉树,其实就加了个center

<br />class Node {<br />	public $data = null;<br />	public $parent = null;<br />	public $left = null;<br />	public $center =null;<br />	public $right = null;<br />}<br /><br />function build_cbtree($a) {<br />	$root = new Node();<br />	$root->data = $a[0];<br />	for ($i = 1; $i < count($a); $i++) {<br />		$node = new Node();<br />		$node->data = $a[$i];<br />		insert_node($root, $node);<br />	}<br />	return $root;<br />}<br /><br />function insert_node($root, $inode) {<br />	$queue = array();<br />	array_unshift($queue, $root);<br />	while (!empty($queue)) {<br />		$cnode = array_pop($queue);<br />		if ($cnode->left == null) {<br />			$cnode->left = $inode;<br />			$inode->parent = $cnode;<br />			return $root;<br />		} else {<br />			array_unshift($queue, $cnode->left);                <br />		}<br />		if ($cnode->center == null) {<br />			$cnode->center = $inode;<br />			$inode->parent = $cnode;<br />			return $root;<br />		} else {<br />			array_unshift($queue, $cnode->center);<br />		}<br />		if ($cnode->right == null) {<br />			$cnode->right = $inode;<br />			$inode->parent = $cnode;<br />			return $root;<br />		} else {<br />			array_unshift($queue, $cnode->right);<br />		}<br />	}<br />	return $root;<br />}<br />//广度优先遍历(先遍历一层,再遍历下一层)<br />function bf_traverse($root) {<br />	$queue = array();<br />	array_unshift($queue, $root);<br />	while (!empty($queue)) {<br />		$cnode = array_pop($queue);<br />		echo $cnode->data . " ";<br />		if ($cnode->left !== null) array_unshift($queue, $cnode->left);<br />		if ($cnode->center !== null) array_unshift($queue, $cnode->center);<br />		if ($cnode->right !== null) array_unshift($queue, $cnode->right);<br />	}<br />}<br /><br />$a = array(1,2,3,4,5,6,7,8);<br />//先把数组变成三叉树<br />$root = build_cbtree($a);<br /><br />echo "<pre class="brush:php;toolbar:false">";<br />print_r($root);<br />echo "
";
bf_traverse($root);

/*$root数据太多就不打出来了
根据广度优先遍历规则得
1 2 3 4 5 6 7 8
*/

//此时$root就是一个三叉树
//插入9,其实就是重复build_cbtree的方法中for循环的代码
$node1 = new Node();
$node1->data =9;
insert_node($root, $node1);

echo "

";<br>print_r($root);<br>echo "
";
bf_traverse($root);
/*
Node Object
(
    [data] => 1
    [parent] => 
    [left] => Node Object
        (
            [data] => 2
            [parent] => Node Object
 *RECURSION*
            [left] => Node Object
                (
                    [data] => 5
                    [parent] => Node Object
 *RECURSION*
                    [left] => 
                    [center] => 
                    [right] => 
                )

            [center] => Node Object
                (
                    [data] => 6
                    [parent] => Node Object
 *RECURSION*
                    [left] => 
Stellungnahme
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
PHP-E-Mail: Schritt-für-Schritt-SendungsanleitungPHP-E-Mail: Schritt-für-Schritt-SendungsanleitungMay 09, 2025 am 12:14 AM

PhpisusedForSensionsemailsDuetoitSintegrationWithServerMailServicesandexternalsMtpproviders, automatisieren SieNotifikationen undmarketingCampaigns.1) setupyourphpenvironmentwithawebebascriccriptionWithPhpithPhPhPhPhPhPHPHPHPSMAILFUCTORISTION.2) useabasiscriccription

So senden Sie E -Mails per PHP: Beispiele und CodeSo senden Sie E -Mails per PHP: Beispiele und CodeMay 09, 2025 am 12:13 AM

Der beste Weg, um E -Mails zu senden, besteht darin, die Phpmailer -Bibliothek zu verwenden. 1) Die Verwendung der Funktion mail () ist einfach, aber unzuverlässig, was dazu führen kann, dass E -Mails Spam eingeben oder nicht geliefert werden können. 2) Phpmailer bietet eine bessere Kontrolle und Zuverlässigkeit und unterstützt HTML -Mail-, Anhänge- und SMTP -Authentifizierung. 3) Stellen Sie sicher, dass die SMTP -Einstellungen korrekt konfiguriert sind und die Verschlüsselung (z. B. Starttls oder SSL/TLS) zur Verbesserung der Sicherheit verwendet wird. 4) Für große Mengen von E -Mails sollten Sie ein E -Mail -Warteschlangensystem verwenden, um die Leistung zu optimieren.

Erweiterte PHP -E -Mail: Benutzerdefinierte Header und FunktionenErweiterte PHP -E -Mail: Benutzerdefinierte Header und FunktionenMay 09, 2025 am 12:13 AM

CustomHeaDersandadvancedFeaturesinphpemailenHanceFunctionality und Relance.1) CustomHeadersAddMetAforTrackingandCategorization.2) htmlemailSallowFormattingAndInteractivity.3) AttemmentmentsCanbesentusings -artig -Phpmailer.4) SMTPAUTHENTICTIVEMPR

Handbuch zum Senden von E -Mails mit PHP & SMTPHandbuch zum Senden von E -Mails mit PHP & SMTPMay 09, 2025 am 12:06 AM

Das Senden von E -Mails mit PHP und SMTP kann über die Phpmailer -Bibliothek erreicht werden. 1) Installieren und konfigurieren Sie Phpmailer, 2) Setzen Sie SMTP -Serverdetails, 3) Definieren Sie den E -Mail -Inhalt, 4) E -Mails senden und Fehler behandeln. Verwenden Sie diese Methode, um die Zuverlässigkeit und Sicherheit von E -Mails sicherzustellen.

Was ist der beste Weg, um eine E -Mail mit PHP zu senden?Was ist der beste Weg, um eine E -Mail mit PHP zu senden?May 08, 2025 am 12:21 AM

ThebestApproachForSendingemailsinphpisusinusThephpmailerlibraryDuetoitSRective, merkeurichness, Anneaseofuse.phpmailersupportsSmtp, bietet DETAILEDErRORHANDLY, erlaubt, dass

Best Practices für die Abhängigkeitsinjektion in PHPBest Practices für die Abhängigkeitsinjektion in PHPMay 08, 2025 am 12:21 AM

Der Grund für die Verwendung der Abhängigkeitsinjektion (DI) ist, dass sie lose Kopplung, Testbarkeit und Wartbarkeit des Codes fördert. 1) Verwenden Sie den Konstruktor, um Abhängigkeiten zu injizieren.

Tipps und Tricks für PHP -Performance -TuningTipps und Tricks für PHP -Performance -TuningMay 08, 2025 am 12:20 AM

PhpperformancetuningiscrucialBecauseitenhancesspeedandeffizienz, die sichvitalforewebapplications.1) CachingwithapcureducesDatabaseloadandimprovesresponSetimes.2 optimierenDatabasequeriesbyselekting -Antriebsanbietung und -Insusingsusing -INDUBUTUBUTUBEXINGEPEEDEPEEDEPEEDEPEEDEPEEDEPEEDEPEEDEPEDEPEED.

PHP -E -Mail -Sicherheit: Best Practices für das Senden von E -MailsPHP -E -Mail -Sicherheit: Best Practices für das Senden von E -MailsMay 08, 2025 am 12:16 AM

TheBestPracticesForSendingemailsSecurelyInphpinclude: 1) usingSecureConfigurations withSmtpandStartTlsenScryption, 2) Validating und SanitIningInputStopreventInjection -Tacks -3) -Decryption -sensistataWithins -SussionSmingSmSslsl, 4), 4), 4), 4), 4)

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.