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

0voto

Alguien tiene codigo de arboles de estructuras de datos , que me de un ejemplo

Es que necesito para un deber , y solo encuentro informacion de arboles binario !!!

0voto

Leonardo-Tadei comentado

Código? En qué lenguaje?

0voto

dairon comentado

Necesitamos saber para que lenguaje necesitas el código y para que tipo de Arbol te refierez para que sea más optimizado.

0voto

JersonCarranzaL comentado

el codigo puede ser , en cualquier lenguaje de programacion orientada a objetos

2 Respuestas

1voto

Leonardo-Tadei Puntos227320

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

2votos

AlbertC Puntos800

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.

Ref:http://www.dotnetheaven.com/article/dom-overview-in-vb.net

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta