Es que necesito para un deber , y solo encuentro informacion de arboles binario !!!
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
Alguien tiene codigo de arboles de estructuras de datos , que me de un ejemplo
- preguntó
- Software
- 465 Vistas
- 2 Respuestas
- solucionada
2 Respuestas
Hola Jerson,
en POO los árboles se suelen implementar usando el patrón de diseño Composite, que es un patrón estructural que permite manejar este tipo de estructuras.
Este sería un ejemplo de implementación en PHP:
<?php
/*
* Ejemplo de árbol implementado con un patrón de diseño Composite
*
* Idea de: http://www.fluffycat.com/PHP-Design-Patterns/Composite/
*/
abstract class OnTheBookShelf {
abstract function getBookInfo($previousBook);
abstract function getBookCount();
abstract function setBookCount($new_count);
abstract function addBook($oneBook);
abstract function removeBook($oneBook);
}
class OneBook extends OnTheBookShelf {
private $title;
private $author;
function __construct($title, $author) {
$this->title = $title;
$this->author = $author;
}
function getBookInfo($bookToGet) {
if (1 == $bookToGet) {
return $this->title." by ".$this->author;
} else {
return FALSE;
}
}
function getBookCount() {
return 1;
}
function setBookCount($newCount) {
return FALSE;
}
function addBook($oneBook) {
return FALSE;
}
function removeBook($oneBook) {
return FALSE;
}
}
class SeveralBooks extends OnTheBookShelf {
private $oneBooks = array();
private $bookCount;
public function __construct() {
$this->setBookCount(0);
}
public function getBookCount() {
return $this->bookCount;
}
public function setBookCount($newCount) {
$this->bookCount = $newCount;
}
public function getBookInfo($bookToGet) {
if ($bookToGet <= $this->bookCount) {
return $this->oneBooks[$bookToGet]->getBookInfo(1);
} else {
return FALSE;
}
}
public function addBook($oneBook) {
$this->setBookCount($this->getBookCount() + 1);
$this->oneBooks[$this->getBookCount()] = $oneBook;
return $this->getBookCount();
}
public function removeBook($oneBook) {
$counter = 0;
while (++$counter <= $this->getBookCount()) {
if ($oneBook->getBookInfo(1) ==
$this->oneBooks[$counter]->getBookInfo(1)) {
for ($x = $counter; $x < $this->getBookCount(); $x++) {
$this->oneBooks[$x] = $this->oneBooks[$x + 1];
}
$this->setBookCount($this->getBookCount() - 1);
}
}
return $this->getBookCount();
}
}
function writeln($line_in) {
echo $line_in."<br/>";
}
writeln("BEGIN TESTING COMPOSITE PATTERN");
writeln('');
$firstBook = new OneBook('Core PHP Programming, Third Edition', 'Atkinson and Suraski');
writeln('(after creating first book) oneBook info: ');
writeln($firstBook->getBookInfo(1));
writeln('');
$secondBook = new OneBook('PHP Bible', 'Converse and Park');
writeln('(after creating second book) oneBook info: ');
writeln($secondBook->getBookInfo(1));
writeln('');
$thirdBook = new OneBook('Design Patterns', 'Gamma, Helm, Johnson, and Vlissides');
writeln('(after creating third book) oneBook info: ');
writeln($thirdBook->getBookInfo(1));
writeln('');
$books = new SeveralBooks();
$booksCount = $books->addBook($firstBook);
writeln('(after adding firstBook to books) SeveralBooks info : ');
writeln($books->getBookInfo($booksCount));
writeln('');
$booksCount = $books->addBook($secondBook);
writeln('(after adding secondBook to books) SeveralBooks info : ');
writeln($books->getBookInfo($booksCount));
writeln('');
$booksCount = $books->addBook($thirdBook);
writeln('(after adding thirdBook to books) SeveralBooks info : ');
writeln($books->getBookInfo($booksCount));
writeln('');
$booksCount = $books->removeBook($firstBook);
writeln('(after removing firstBook from books) SeveralBooks count : ');
writeln($books->getBookCount());
writeln('');
writeln('(after removing firstBook from books) SeveralBooks info 1 : ');
writeln($books->getBookInfo(1));
writeln('');
writeln('(after removing firstBook from books) SeveralBooks info 2 : ');
writeln($books->getBookInfo(2));
writeln('');
writeln('END TESTING COMPOSITE PATTERN');
//var_dump($books);
// Crea otra instancia compuesta y la agrega
$books2 = new SeveralBooks();
$books2->addBook($firstBook);
$books->addBook($books2);
// El árbol se recorre de forma uniforme
print('<pre>');
print_r($books);
print('</pre>');
?>
Espero te sirva. Saludos cordiales
Por favor, accede o regístrate para añadir un comentario.
Una estructura de datos en forma de arbol es cualquiera estructura en la cual no existan bucles, si el arbol es binario quiere decir que desde un nodo solo cuelgan dos elementos si haces que desde un nodo cuelgen 3 hijos entonces no sera binario. Por ejemplo el DOM de una pagina esta estructurado en forma de arbol y no es binario.
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 407095
- 1
- Jul 5, 2015
Sin Respuesta
-
- 158
- 0
- Mar 19
-
- 75
- 1
- Feb 26
-
- 188
- 0
- Ene 30
-
- 1025
- 0
- Nov 7, 2023
-
- 289
- 0
- Sep 19, 2023
-
- 301
- 0
- Ago 21, 2023
-
- 382
- 0
- May 14, 2023
-
- 352
- 0
- Abr 21, 2023
- ver todas
Preguntas relacionadas
- Alguien tiene una Red Semantica en cualquier lenguaje de programacion?
- alguien que tenga un ejemplo de como hacer un documento word con php y sql server
- Titanium studio appcelerator: ¿Alguien tiene un ejemplo para postear en facebook?
- Alguien me da un ejemplo completo de restful con autenticacion para php y mysql
- se puede pasar datos de un JSP a un html, y si se puede alguien me puede ayudar
Actividad Reciente
Santiago2610 comentó Mar 23
Acualizar ChoiceField en djangoSantiago2610 preguntó Mar 19
Acualizar ChoiceField en djangogonzalss preguntó Feb 26
Script /boot/ scrapingParkJo preguntó Ene 30
No me deja instalar Oracleelporfirio respondió Ene 10
Actualizar la imagen con los datos devuelto en un …ovedg preguntó Dic 31, 2023
Actualizar la imagen con los datos devuelto en un …Ehdez preguntó Nov 7, 2023
Necesito en wordpress un pluging que me calcule la…pedrourday preguntó Sep 19, 2023
Alternativas a ThreeJS y BabylonJS?pedrourday preguntó Ago 21, 2023
¿Que tecnologias y lenguajes me recomiendan?Fabio respondió Jul 11, 2023
plugin de efecto circular 3d en imagenes
Ultimas Preguntas
Preguntas relacionadas
- Alguien tiene una Red Semantica en cualquier lenguaje de programacion?
- alguien que tenga un ejemplo de como hacer un documento word con php y sql server
- Titanium studio appcelerator: ¿Alguien tiene un ejemplo para postear en facebook?
- Alguien me da un ejemplo completo de restful con autenticacion para php y mysql
- se puede pasar datos de un JSP a un html, y si se puede alguien me puede ayudar
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150460 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos
Todos los Usuarios Usuarios Nuevos
...