Maison > développement back-end > tutoriel php > Comment implémenter un chemin qui totalise une certaine valeur dans un arbre binaire en PHP (code)

Comment implémenter un chemin qui totalise une certaine valeur dans un arbre binaire en PHP (code)

不言
Libérer: 2023-04-04 09:36:01
avant
2192 Les gens l'ont consulté

Le contenu de cet article explique comment PHP implémente le chemin (code) qui neutralise un arbre binaire à une certaine valeur. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

Le chemin dont la somme dans l'arbre binaire est une certaine valeur :

Saisissez le nœud talon d'un arbre binaire et un entier, et imprimez tous les nœuds de l'arbre binaire dont la somme est le chemin entier d’entrée. Un chemin est défini comme un chemin partant du nœud racine de l’arbre et descendant jusqu’aux nœuds en passant par les nœuds feuilles. (Remarque : dans la liste des valeurs de retour, le tableau avec la plus grande longueur de tableau est placé en premier)

Idées :

1 Parcours pré-commandé de l'arbre binaire, ordre gauche et droite.

2 , transmettez la valeur cible target, target-=val

3 target est 0 et les deux gauche et droite sont nulles, atteignant le nœud feuille

4. Deux tableaux en dehors de la fonction, list Le tableau stocke un chemin et le tableau listAll stocke tous les chemins

FindPath(root,target)
    if root==null return listAll
    list[]=root.val
    target-=root.val
    if target==0 && root->left==null && root->right==null
        listAll[]=list
    FindPath(root->left,target)
    FindPath(root->right,target)
    //如果到了这条路径的跟结点,并没有达到目标,就删掉最后的结点,退回上一个结点
    array_pop(list)
    return listAll
Copier après la connexion
<?php
class TreeNode{
    var $val;
    var $left = NULL;
    var $right = NULL;
    function __construct($val){
        $this->val = $val;
    }   
}

function FindPath($root,$target)
{
        static $list=array();
        static $listAll=array();
        if($root==null){
                return $listAll;
        }   
        $target-=$root->val;
        $list[]=$root->val;
        if($target==0 && $root->left==null && $root->right==null){
                $listAll[]=$list;
        }   
        FindPath($root->left,$target);
        FindPath($root->right,$target);
        array_pop($list);
        return $listAll;
}

$node10=new TreeNode(10);
$node5=new TreeNode(5);
$node12=new TreeNode(12);
$node4=new TreeNode(4);
$node7=new TreeNode(7);

$node10->left=$node5;
$node10->right=$node12;
$node5->left=$node4;
$node5->left=$node7;

$tree=$node10;

$res=FindPath($tree,22);
var_dump($res);
Copier après la connexion
<?php
/*class TreeNode{
    var $val;
    var $left = NULL;
    var $right = NULL;
    function __construct($val){
        $this->val = $val;
    }
}*/
function FindPath($root,$target)
{
    $list=array();
    $listAll=array();
    $res=dfs($root,$target,$list,$listAll);
    return $res;
}

function dfs($root,$target,&$list,&$listAll)
{

        if($root==null){
                return $listAll;
        }   
        $target-=$root->val;
        $list[]=$root->val;
        if($target==0 && $root->left==null && $root->right==null){
                
                $listAll[]=$list;
        }   
        dfs($root->left,$target,$list,$listAll);
        dfs($root->right,$target,$list,$listAll);
        array_pop($list);
        return $listAll;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal