public void insere(int n, ref Arvore raiz) { Arvore temp, subarv; this.info = n; if (raiz == null) raiz = this; else { temp = raiz; while (temp != null) { subarv = temp; if (n <= temp.info) { temp = temp.SAE; if (temp == null) subarv.SAE = this; } else { temp = temp.SAD; if (temp == null) subarv.SAD = this; } } } }
public Arvore() { info = 0; SAE = SAD = null; }
static void Main(string[] args) { int op, n; Arvore arv, raiz = null; do { menu(); op = int.Parse(Console.ReadLine()); Console.Clear(); switch (op) { case 1: Console.Write("Digite um valor para ser inserido : "); n = int.Parse(Console.ReadLine()); arv = new Arvore(); arv.insere(n, ref raiz); break; case 2: Console.Write("Digite um valor para ser buscado : "); n = int.Parse(Console.ReadLine()); if (raiz != null) { int i = raiz.pesquisa(n); if (i != -1) Console.WriteLine("O numero foi encontrado no nivél {0}", i); else Console.WriteLine("O numero não foi encontrado"); } else Console.WriteLine("Não existem niveis para serem exibidos"); Console.ReadKey(); break; case 3: if (raiz != null) raiz.preOrdem(); else Console.WriteLine("Não existem niveis para serem exibidos"); Console.ReadKey(); break; case 4: if (raiz != null) raiz.posOrdem(); else Console.WriteLine("Não existem niveis para serem exibidos"); Console.ReadKey(); break; case 5: if (raiz != null) raiz.inOrdem(); else Console.WriteLine("Não existem niveis para serem exibidos"); Console.ReadKey(); break; case 6: if (raiz != null) raiz.emNivel(); else Console.WriteLine("Não existem niveis para serem exibidos"); Console.ReadKey(); break; case 7: int maxnivel = 0; ; int aux = 0; if (raiz != null) Console.WriteLine("A altura da atual arvore é : {0}", raiz.altura(ref aux, ref maxnivel)); else Console.WriteLine("Arvore sem altura para ser exibida"); Console.ReadKey(); break; case 98: //Preenchimento automatico para teste int[] valores98 = new int[] { 6, 2, 8, 1, 4, 7, 9, 3, 5 }; for (int i = 0; i < valores98.Length; i++) { arv = new Arvore(); arv.insere(valores98[i], ref raiz); } break; case 99: //Preenchimento automatico para teste int[] valores99 = new int[] { 50, 45, 60, 43, 47, 42, 44, 49, 48 }; for (int i = 0; i < valores99.Length; i++) { arv = new Arvore(); arv.insere(valores99[i], ref raiz); } break; } } while (op != 8); }