PHP Arbre Binaire de Récursivité Algorithme
Je veux créer un PHP récursive programme à l'aide d'un Arbre Binaire et la Récursivité.
Je veux imprimer l'arbre binaire de niveau en niveau, en utilisant la récursivité. Je veux répéter à travers l'arbre, pousser le noeud dans une table de hachage qui a le niveau que le point de référence.
Voici ce que j'ai à ce jour:
$binary_tree = array(array(1 => array(2 => array(4,5),4=>array(5,6))));
1
|
------------------
| |
2 4
| |
---------- ----------
| | | |
4 5 5 6
Et le résultat final devrait ressembler à ceci:
$data[0] = array(1);
$data[1] = array(2,4);
$data[2] = array(4,5,5,6);
Je peux facilement faire une boucle à travers la matrice et imprimer les chiffres, qui sont le niveau d'(l'index du tableau).
Voici la fonction, ce qui est faux, mais ma première photo:
function recurse_tree($data,$level=0){
$final = array();
$tmp = array()
//first check if data is array
if(is_array($data)){
//loop through data
foreach($data as $elm){
//push data to the tmp array
$tmp[] = recurse_tree($elm,$level+1);
}
//not an array
} else {
//push data to the final array. can we push to the tmp array.
array_push($final[level],$elm);
}
//merge final and tmp array and return
return ($final + $tmp);
}
Je ne suis pas trop expérimenté avec la récursivité, ni la résolution de problème, j'ai donc écrit les étapes ci-dessous qui sont en cours. Le problème que j'ai maintenant c'est que sur l'étape 9 j'ai un doute comment gérer les touches 2 et 4, et enfin de gérer le nœud racine de la clé 1. Aussi, quand j'arrive à les étapes 5 à 8, im au niveau 4, ce qui est correct, cependant, selon l'arbre, son niveau 2.
$flattened_tree = recurse_tree($data);
//STEPS:
1./ called recurse_tree
data: array(array(1 => array(2 => array(4,5),4=>array(5,6))));
level: 0
final: array();
tmp: array();
2./ called recurse_tree:
data: array(1 => array(2 => array(4,5),4=>array(5,6)));
level: 1
final: array();
tmp: array();
3./ called recurse_tree:
data: array(2 => array(4,5),4=>array(5,6));
level: 2
final: array();
tmp: array();
4./ called recurse_tree:
data: array(4,5)
level: 3
final: array();
tmp: array();
5./ called recurse_tree:
data: 4
level: 4
final: array(4 => 4)
tmp: array()
6./ called recurse_tree:
data: 5
level: 4
final: array(4 => 5)
tmp: array(4 => 4)
7./ called recurse_tree:
data: 5
level: 4
final: array(4=> 5)
tmp: array(4 => array(4,5))
8./ called recurse_tree:
data: 6
level: 4
final: array(4 => 6)
tmp: array(4 => array(4,5,5))
Quelle est la meilleure façon de mettre en œuvre un Arbre Binaire de récursivité algorithme?
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien, c'est ce que vous voulez:
L'utiliser comme ceci:
Cela vous donne:
Cette fonction dans la classe de la vue en Arborescence
vous avez un retour de tableau qui a toutes les valeurs de nœud, puis vous pouvez les disposer sur le dessous de la vue de l'arborescence .
Qui crée un arbre binaire: