elemento que vamos incluir e o primeiro da Arvore, pois neste caso teremos que atualizar o descritor INICIOARGUMENTOSARVORE: MATRIZ[N] DE REG-ARVOREN: INTEIRODESCRITOR:INTEIROELEMENTO:INTEIROVARIAVEISREG-ARVORE: REGISTROESQUERDA:INTEIRONO:INTEIRODIREITA:INTEIROFIM-REGISTROCONT:INTEIROPAI ,FILHO , POS : INTEIROPROCEDA INCLUSAO-ARVOREPOS : = ELEMENTO_VAZIO (ARVORE,N)PAI : = NULOFILHO : = DESCRITORENQUANTO FILHO <> NULO E ARVORE [FILHO].NO < > ELEMENTOSE ELEMENTO > ARVORE [FILHO].NO PAI : = FILHOFILHO : = ARVORE[ FILHO ] .DIREITASENAOPAI : = FILHOFILHO : = ARVORE[ FILHO ] .ESQUERDAFIM-SEFIM-ENQUANTOSE ARVORE [ FILHO ].NO = ELEMENTOMOSTRE ( "ELEMENTO JA EXISTE")SENAOARVORE [POS].NO: = ELEMENTOARVORE [POS].DIREITA : = NULOARVORE [POS].ESQUERDA : = NULOSE PAI = NULODESCRITOR : = POSSENAOSE ARVORE [ PAI ].NO < ELEMENTO ARVORE [ PAI ].DIREITA = POSSENAOARVORE [ PAI ].ESQUERDA = POSFIM SEFIM-SEFIM_SEFIM Inclusao RecursivaO processo para inclusao recursiva tem as mesmas diretrizes da inclusao normal, ou seja , eu devo , procurar o locar de insercao do elemento , atraves de uma pesquisa que comeca da raiz, se eu encontrar o elemento, a inclusao deve ser abortada, caso contrario, eu devo fazer a inclusao em um espaco vazio, e fazer com que o respectivo encadeamento do no incluido com o seu pai. No algoritmo anterior, nos usamos a variavel PAI para armazenar que sera o pai do novo elemento, no caso do algoritmo recursivo, nos nao vamos precisa desta variavel, pois o valor do PAI , sera armazenado naturalmente na pilha de chamadas. INICIO ARGUMENTOS ARVORE,N,DESCRITOR,ELEMENTO,INCVARIAVEISN,DESCRITOR,ELEMENTO : INTEIROINC:LOGICOREG-ARVORE: REGISTROESQUERDA:INTEIRONO:INTEIRODIREITA:INTEIROFIM-REGISTROMATRIZ ARVORE[N] DE REG-ARVOREPROCEDA INCLUSAO-RECSE DESCRITOR = NULOINCLUIU : = VERDADEIROPOS : = ELEMENTO-VAZIO(ARVORE,N)ARVORE [ POS ].NO : = ELEMENTOARVORE [ POS ].ESQUERDA : = NULOARVORE [ POS ].DIREITA : = NULOSENAOSE ARVORE [ DESCRITOR ] = ELEMENTORETORNE "INCLUSAO INVALIDA")FIM-SESE ARVORE [ DESCRITOR ].N > ELEMENTOINCLUSAO-REC (ARVORE,N,ARVORE[DESCRITOR].ESQUERDA,ELEMENTO,INC)SE INCARVORE [ DESCRITOR ] . ESQUERDA : = POSINC : = FALSOFIM-SESENAOCONSULTA-REC (ARVORE,N,ARVORE[DESCRITOR].DIREITA,ELEMENTO,INC)SE INCARVORE [ DESCRITOR ].DIREITA : = DESCRITORINC: = FALSOFIM-SEFIM-SEFIM-SESE INC DESCRITOR : = POSFIM-SEFIM ExclusaoA exclusao permite eliminar um no de uma arvore mantendo suas propriedades. Para tanto procedemos da seguinte forma, a exclusao sera feita somente de maneira recursiva, pois a sua implementacao de forma normal e muito complicada. Procura-se o no que vai ser excluido e o seu pai Se o no que sera excluido nao tiver nenhum filho ele sera simplesmente excluido Se o no que sera excluido tiver somente um filho o seu avo passara a ser o seu pai. Se o no a ser excluido tiver 2 filhos ele sera substituido pelo no que estiver mais a esquerda entre todos os que estao a sua direita.Novamente devemos tomar um cuidado espcia caso se faca a exclusao da raiz da arvore, neste caso teremos que atualizar o descritor. INICIOARGUMENTOSARVORE,N,DESCRITOR,ELEMENTOVARIAVEISREG-ARVORE: REGISTROESQUERDA:INTEIRONO:INTEIRODIREITA:INTEIROFIM-REGISTRON,DESCRITOR,ELEMENTO,FILHO,PAI,NP:INTEIROMATRIZ ARVORE[N] DE REG-ARVOREPROCEDA EXCLUSAO-ARVOREFILHO : =DESCRITORPAI : =DESCRITORENQUANTO ARVORE[ FILHO ].NO < > ELEMENTO E ARVORE [ FILHO ].NO < > NULOPAI : = FILHO {PROCURA O NO}SE ELEMENTO > ARVORE [ FILHO ].NOFILHO : = ARVORE [ FILHO ].DIREITASENAO FILHO : = ARVORE [ FILHO ].ESQUERDAFIM-SEFIM ENQUANTOSE ARVORE [ FILHO ].NO = NULORETORNE "ERRO ELEMENTO INEXISTENTE"FIM-SESE ARVORE [ FILHO ].ESQUERDA = NULO E ARVORE [ FILHO ] .DIR = NULO SE ARVORE [ FILHO ].NO