Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool IsAVL(tBinTree tree){
- int fb = 0;
- // Verificando se os nos esquerdo e direito da arvores estao vazios ou nao.
- bool isRightNULL = tree->right == NULL;
- bool isLeftNULL = tree->left == NULL;
- // Caso ambos existam, calcule o fator de balanceamento.
- if(!isRightNULL && !isLeftNULL)
- fb = tree->right->height() - tree->left->height();
- //Caso ambos n existam, descubra quem existe e considere a altura do outro como sendo 0;
- //Caso apenas o lado direito exista, o fator de balanceamento eh sua altura positiva.
- else if(!isRightNULL)
- fb = tree->right->height();
- //Caso apenas o lado esquero exista, o fator de balanceamento eh sua altura negativa.
- else
- fb = tree->left->height() * -1;
- //verifique a condiçao de uma arvore balanceada e retorne true caso ele n seja aceita
- if(abs(fb)>1)
- return true;
- //O fato da raiz de uma subarvore estar balanceada, n significa q a arvore completa esteja
- //Ai que entra a recursividade, afim de encontrar algum desbalanceamento
- if(!isRightNULL) {
- if (IsAVL(tree->right))
- return true;
- }
- if(!isLeftNULL)
- return IsAVL(tree->left);
- //Caso apos passar por todas as verificacoes n foi encontrado desbalanceamento, retorne false.
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement