public void RotacaoSimplesEsquerda(No no) { Console.WriteLine("Rotacao Simples Esquerda " + no.Valor); No netoE = null; //se necessario, atualiza a raiz if (no.ERaiz()) { raiz = no.FilhoDireito; } //guarda o netoE e atualiza suas referencia para o pai if (no.FilhoDireito.FilhoEsquerdo != null) { netoE = no.FilhoDireito.FilhoEsquerdo; netoE.Pai = no; } //Atualiza as referencias do filho direito do no no.FilhoDireito.Pai = no; no.FilhoDireito.FilhoEsquerdo = no; //Atualiza as referencias do pai do no se existir if (no.Pai != null) { if (no.Valor > no.Pai.Valor) { no.Pai.FilhoDireito = no.FilhoDireito; } else { no.Pai.FilhoEsquerdo = no.FilhoDireito; } } //Atualiza as referencias do no no.Pai = no; //if(netoE != null) no.FilhoDireito = netoE; //else // no.FilhoD = null; //exibirArvore(raiz); }
public void RotacaoSimplesDireita(No no) { Console.WriteLine("Rotacao Simples Direita " + no.Valor); No netoD = null; //se necessario, atuliza a raiz if (no.ERaiz()) { raiz = no.FilhoEsquerdo; } //guarda o netoD if (no.FilhoEsquerdo.FilhoDireito != null) { netoD = no.FilhoEsquerdo.FilhoDireito; netoD.Pai = no; } //Atualiza as referencias do filho esquerdo do no no.FilhoEsquerdo.Pai = no; no.FilhoEsquerdo.FilhoDireito = no; //Atualiza as referencias do pai do no, se existir if (no.Pai != null) { if (no.Valor > no.Pai.Valor) { no.Pai.FilhoDireito = no.FilhoEsquerdo; } else { no.Pai.FilhoEsquerdo = no.FilhoEsquerdo; } } //Atualiza as referencias do no no.Pai = no; //if(netoD != null) no.FilhoEsquerdo = netoD; //else // no.setFilhoE(null); //exibirArvore(raiz); }