Arvore em Java

olá a todos
galera alguem tem alguma idéia de como fazer isso ?
eu posso desinrrolar de acordo com os exemplos que eu pesquisa mas preciso de saber como fazer essa questão que o professor botou

ele quer que agente defina uma classe que represente um arquivo armazenado distribuidamente em um disco rígido: cada parte do arquivo é composta de um bloco de dados (pode ser encarado como um grande texto), um índice (que indica a que parte do arquivo diz respeito aquele bloco), cilindro e setor onde aquele bloco está situado. Estes blocos devem estar dispersos em uma árvore binária de busca, com as operações básicas (inclusão, remoção e obtenção). Para efeitos de simplificação, deve ser considerado que a árvore é montada apenas de acordo com o índice e é com base nele que as operações devem ser construídas.

alguem tem uma luz ?

Comece fazendo uma classe para criar uma árvore binária de busca, sem se preocupar com a parte do disco rígido, ou dos arquivos.
Essa parte, refere-se ao uso da árvore.

[quote=ViniGodoy]Comece fazendo uma classe para criar uma árvore binária de busca, sem se preocupar com a parte do disco rígido, ou dos arquivos.
Essa parte, refere-se ao uso da árvore.[/quote]
ok. quando terminar outro que eu to fzendo ai faço e boto aqui editando ^^
vlw

me baseei num exemplo que peguei

public class Arvore {
	  
	public void inserir(No node, int valor) {
        if (valor < node.valor) {
            if (node.esquerda != null) {
                inserir(node.esquerda, valor);
            } else {
                System.out.println("  Inserindo " + valor + " a esqueda de " + node.valor);
                node.esquerda = new No(valor);
            }
        } else if (valor > node.valor) {
            if (node.direita != null) {
                inserir(node.direita, valor);
            } else {
                System.out.println("  Inserindo " + valor + " a direita de " + node.valor);
                node.direita = new No(valor);
            }
        }
    }

    public No remover(No node, int valor) {
        System.out.println("  Percorrendo o Nó " + node.valor);
        if (node == null) {
            System.out.println("  Arvore vazia ");
        }
        if (valor < node.valor) {
            node.esquerda = remover(node.esquerda, valor);
            
        } else if (valor > node.valor) {
            node.direita = remover(node.direita, valor);

        } else if (node.esquerda != null && node.direita != null) 
        {
            System.out.println("  Removeu o Nó " + node.valor);
            node.valor = encontraMinimo(node.direita).valor;
            node.direita = removeMinimo(node.direita);
        } else {
            System.out.println("  Removeu o Nó " + node.valor);
            node = (node.esquerda == null) ? node.esquerda : node.direita;
        }
        return node;
    }
    public No removeMinimo(No node) {
        if (node == null) {
            System.out.println("  ERRO ");
        } else if (node.esquerda != null) {
            node.esquerda = removeMinimo(node.esquerda);
            return node;
        } else {
            return node.direita;
        }
        return null;
    }

    public No encontraMinimo(No node) {
        if (node != null) {
            while (node.esquerda != null) {
                node = node.esquerda;
            }
        }
        return node;
    }
}
public class No {
		No esquerda;
	    No direita;
	    int valor;

	    public No(int valor) {
	        this.valor = valor;
	    }
	}

vc esta violando o encapsulamento da classe No,
mas como é só um exercício didático tlvz isso seja irrelevante, depende do foco do seu professor

agora tem um porém na segunda parte,

Java roda em cima de uma máquina virtual, e a intenção é justamente abstrair detalhes do ambiente real, tais como cilindros do disco, memória
tlvz exista uma API pra acessar diretamente esses recursos, mas com certeza deixa de ser multiplataforma

se eu estivesse em seu lugar eu resolveria esse exercício somente com C