apresentação de Árvores binárias

Upload: albertosales

Post on 05-Nov-2015

162 views

Category:

Documents


0 download

DESCRIPTION

introdução ao conceito de árvores binárias

TRANSCRIPT

  • IFMT - CUIAB 1

    rvores Binrias

    Alberto Sales

  • 2rvores Binrias Esquemas em rvores so utilizados para representar estruturas

    hierrquicas (rvores genealgicas, campeonatos de futebol ou organizaes).

    Na computao, as rvores podem ser utilizadas para representar decises, definies formais de linguagem ou mesmo para representar hierarquia entre elementos

    Na programao: No contexto da programao e cincia da computao,

    uma estrutura de dados que herda as caractersticas das topologias em rvore onde os dados esto dispostos de os dados esto dispostos de forma hierrquica forma hierrquica

    um conjunto de dados hierarquicamente subordinado a outro

  • 3rvores Binrias: analogia Uma rvore composta por um elemento principal chamado raiz, que

    possui ligaes para outros elementos, que so denominados galhos ou filhos.

    Estes galhos levam a outros elementos que tambm possuem outros galhos. O elemento que no possui galhos conhecido como folha ou n terminal.

  • 4rvores Binrias: conceito Uma rvore binria um conjunto finito de elementos que est

    vazio ou particionado em trs subconjuntos: raiz da rvore - elemento inicial (nico); subrvore da esquerda - se vista isoladamente compe uma

    outra rvore; subrvore da direita - se vista isoladamente compe uma

    outra rvore. A rvore pode no ter nenhum elemento (rvore vazia). A

    definio recursiva e, devido a isso, muitas operaes sobre rvores binrias utilizam recurso.

    As rvores onde cada n que no seja folha numa rvore binria tem subrvores esquerda e direita no vazias so conhecidas como rvores estritamente binrias. Uma rvore estritamente binria com n folhas tem 2n - 1 ns.

  • 5rvores Binrias: conceito A figura abaixo apresenta um mtodo convencional de

    representao de uma rvore. Nesta rvore, o elemento A a raiz da rvore, a subrvore da

    esquerda o elemento B e a da direita representada pelo elemento C.

    Um n sem filhos chamado de folha. Sendo A a raiz de uma rvore binria e B sua subrvore, dito que A pai de B e que B filho de A.

  • 6rvores Binrias: relaes Outras relaes (e conceitos) podem ser observados na figura

    apresentada abaixo: B e C so filhos de A. B e C so irmos. TA a subrvore enraizada em A, portanto toda a rvore. TF a subrvore enraizada em F, que contm os ns F, H e I. Ns sem filhos so chamados de folhas, portanto os ns D, G, H

    e I so folhas.

  • 7rvores Binrias: Caminho Um caminho da rvore composto por uma seqncia de ns

    consecutivos (n1,n2 ,n3 ,,nkk-1,nk) tal que existe sempre a relao: nj pai de n1j+1.

    Os k ns formam um caminho de comprimento k - 1. O comprimento entre o n A e o n H 3.

  • 8rvores Binrias: Nvel de n O nvel de um n pode ser definido como o n raiz de nvel 0.

    Os outros ns tm um nvel que uma unidade a mais do que o nvel do seu pai.

    Na rvore da Figura tem-se: Nvel 0: A Nvel 1: B e C Nvel : D, E e F Nvel : G, H e I

  • 9rvores Binrias: Nvel de n Altura de um n o comprimento do maior caminho do n at

    alguns de seus descendentes. Descendentes do n so todos os ns que podem ser

    alcanados caminhando-se para baixo a partir do n. A altura de cada uma das folhas 1.

    Desta maneira a altura de A 4, a altura de C 3 enquanto que de E e F 2.

  • 10

    rvores Binrias: rvore Binria Completa

    Na Figura a pode ser vista uma rvore completa de nvel 3 . Uma rvore completa uma rvore estritamente binria na qual

    todas as folhas esto no mesmo nvel k. Sendo k a profundidade da rvore, o nmero total de ns 2k+1-1

    e o nmero total de folhas k. Embora uma rvore binria completa possua muitos ns (o

    mximo para cada profundidade), a distncia da raiz a uma folha qualquer relativamente pequena.

    A rvore da Figura tem profundidade 3 com 15 ns (24 - 1) e 8 folhas (23).

  • 11

    rvores Binrias: rvore Binria Completa

    O nmero total de ns numa rvore binria completa de profundidade d, tn, igual soma do nmero de ns em cada

    nvel entre 0 e d. Sendo assim:

  • 12

    rvores de Busca Binria Uma rvore de busca binria (Binary search tree) uma rvore

    binria onde a informao que o n esquerdo possui menor ou igual informao da chave.

    De forma anloga, a informao que o n direito possui maior ou igual informao da chave.

    O objetivo de organizar dados em rvores de busca binria facilitar a tarefa de procura de um determinado valor.

    A partir da raiz e de posse da informao a ser encontrada, possvel saber qual o caminho (galho) a ser percorrido at encontrar o n desejado.

    Para tanto, basta verificar se o valor procurado maior, menor ou igual ao n que se est posicionando

  • 13

    rvores de Busca Binria Deve-se observar que no existe uma nica forma de organizar

    um conjunto de informaes em uma rvore de busca binria, ainal, dependendo da escolha do n raiz, obtm-se rvores diferentes.

    Na figura os valores ({ 2, 3, 5, 5, 7, 8}) so organizados em rvores de busca de duas maneiras diferentes.

  • 14

    rvores de Busca Binria As duas rvores contm exatamente os mesmos valores, porm

    possuem estruturas diferentes. Enquanto a rvore A est enraizada em um dos ns de valor 5, a

    rvore B est enraizada no n de valor 2. Supondo que se est buscando o valor 8 nas rvores, as

    comparaes seriam como se segue na tabela.

  • 15

    rvores de Busca Binria Na rvore A, so realizadas menos comparaes em relao

    utilizada na rvore B. O melhor caso ir ocorrer quando a rvore estiver cheia, neste

    caso a procura de um item ter tempo proporcional a log n, enquanto o pior caso ocorrer quando todos os ns da rvores apontarem somente para um dos lados, caso em que o tempo de processamento da procura ser proporcional a n.

  • 16

    Operaes em rvores Binrias: Insero

    A insero comea com uma busca procurando pelo valor na rvore.

    Se o elemento no existir na vore, alcanada a folha, e ento inserido o valor nesta posio.

    Ou seja, examinada a raiz e introduzido um novo n na subrvore da esquerda, se o valor novo menor do que a raiz, ou na subrvore da direita, se o valor novo for maior do que a raiz.

    Os algoritmos (verso iterativa) e (verso recursiva), Os algoritmos (verso iterativa) e (verso recursiva), respectivamente, demonstram o processo de incluso de um respectivamente, demonstram o processo de incluso de um elemento na rvoreelemento na rvore.

  • 17

  • 18

  • 19

    Operaes em rvores Binrias: Insero

    Os algoritmos deixam claro o processo de insero, o novo valor primeiro comparado com o valor da raiz: Se seu valor for menor que a raiz, comparado ento com o

    valor do filho da esquerda da raiz. Se seu valor for maior, ento compara-se com o filho da

    direita da raiz. Este processo continua at que se chegue a um n folha, e ento

    adiciona-se o filho direita ou esquerda, dependendo de seu valor ser maior ou menor que o valor da folha.

  • 20

    rvores Binrias: Pesquisa Para a busca em uma rvore binria por um valor especfico

    deve-se examinar a raiz: Se o valor for igual raiz, o valor existe na rvore. Se o valor for menor do que a raiz, ento deve-se buscar na

    subrvore da esquerda, e assim recursivamente em todos os ns da subrvore.

    Similarmente: se o valor for maior que a raiz, ento deve-se buscar na

    subrvore da direita. At alcanar o n-folha da rvore, encontrando-se ou no o

    valor requerido

  • 21

    rvores Binrias: Pesquisa

  • 22

    rvores Binrias: Pesquisa

  • 23

    rvores Binrias: Exemplo#define FILHOS 4typedef struct NO {

    int info;struct NO *pai;struct NO *filhos[FILHOS];

    } NO;

    typedef struct NO {int info;struct NO *pai;struct NO *filho; /* 10 filho */struct NO *irmao; /* prximo irmo*/

    } NO;

    Representao com vetor de filhos

    Representao Dinmica

  • 24

    rvores Binrias: Exemplo Na figura fica clara a representao de rvores, com vetores, ter

    limitaes para a quantidade de filhos.

  • 25

    rvores Binrias: Exemplo No programa, com ponteiros, o campo filho for um ponteiro

    para subrvore esquerda e o campo irmao como o ponteiro para a raiz da subrvore direita, tem-se uma rvore binria como a representada na figura abaixo.

  • 26

    rvores Binrias: Exemplo Com o programa a seguir, tem-se a representao de uma rvore

    binria conforme a Figura vista anteriormente.

    typedef struct NO {int info;struct NO *esquerda;struct NO *direita;struct NO *pai;

    } NO;

  • 27

    rvores Binrias: Exemplo

  • 28

    rvores Binrias: Exemplo

  • 29

    rvores Binrias: Representao Como acontece com os ns de listas, os ns de rvores podem

    ser implementados como elementos de vetores ou como alocaes de uma varivel dinmica. Cada n contm os campos info, left, right e father.

    Os campos left, right e father de um n apontam para o filho esquerdo, para o filho direito e para o pai do n, respectivamente.

    Usando a implementao de vetor, podemos declarar:

    #define NUMNODES 500struct nodetype {

    int info;int left;int right;int father;

    };struct nodetype node[numnodes];

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29