public class Arvore {
  private Conta		conta;
  private Arvore	esq, dir;

  public void insere(Conta c) {
    if (conta == null) {
      conta = c;
      esq = new Arvore();
      dir = new Arvore(); }
    else {if (conta.num_conta() < c.num_conta()) 
            dir.insere(c);
          else if (conta.num_conta() > c.num_conta()) 
                  esq.insere(c); 
               else System.out.println("Conta existente!"); }
  }
  
  public Conta busca(long num) {
// return tem que ser a ultima instrucao!
    Conta	res;

    if (conta == null) 
      res = null;
    else if (conta.num_conta() == num) 
           res = conta; 
         else {if (conta.num_conta() < num) 
                 res = dir.busca(num);
               else res = esq.busca(num); }
    return res;
  }

  public int num_elementos() {
      if (conta == null) 
        return 0;
      else return (1 + esq.num_elementos() + dir.num_elementos());
  }

  public double soma() {
      if (conta == null) 
        return 0.0;
      else return (conta.saldo_conta() + esq.soma() + dir.soma());
  }
}
