Você está aqui: Página Inicial Disciplinas Estruturas de Dados Lineares ArvoreSimples2014.java

ArvoreSimples2014.java

ArvoreSimples2014.java — Java source code, 3 kB (3483 bytes)

Conteúdo do arquivo

import java.util.Iterator;
import java.util.Vector;
public class ArvoreSimples implements ArvoreGenerica
{
	//Atributos da �rvore
	N� raiz;
	int tamanho;
	//Construtor
	public ArvoreSimples(Object o)
	{
		raiz = new N�(null, o);
		tamanho = 1;
	}
	/** Retorna a raiz da �rvore */
	public N� root()
	{
		return raiz;
	}
	/** Retorna o n� pai de um n� */
	public N� parent(N� v)
	{
		return (v.parent());
	}

	/** retorna os filhos de um n� */
	public Iterator children(N� v)
	{
		return v.children();
	}
	/** Testa se um n� � interno */
	public boolean isInternal(N� v)
	{
		return (v.childrenNumber() > 0);
	}
	/** Testa se um n� � externo*/
	public boolean isExternal(N� v)
	{
		return (v.childrenNumber() == 0);
	}
	/** Testa se um n� � a raiz */
	public boolean isRoot(N� v)
	{
		return v == raiz;
	}
	/** Adiciona um filho a um n� */
	public void addChild(N� v, Object o)
	{
		N� novo = new N�(v, o);
		v.addChild(novo);
		tamanho++;
	}
	/** Remove um n�
	 *  S� pode remover n�s externos e que tenham um pai (n�o seja raiz)
	*/
	public Object remove(N� v) throws InvalidN�Exception
	{
		N� pai = v.parent();
		if (pai != null || isExternal(v))
			pai.removeChild(v);
		else
			throw new InvalidN�Exception();
		Object o = v.element();
		tamanho--;
		return o;
	}
	/** Troca dois elementos de posi��o */
	public void swapElements(N� v, N� w)
	{
		/*M�todo que serve de exerc�cio
		 * Este m�todo dever� fazer com que o objeto
		 * que estava na posi��o v fique na posi��o w
		 * e fazer com que o objeto que estava na posi��o w
		 * fique na posi��o v
		 */  
		
	}
	/** Retorna a profundidade de um n� */
	public int depth(N� v)
	{
		int profundidade = profundidade(v);
		return profundidade;
	}
	private int profundidade(N� v)
	{
		if (v == raiz)
			return 0;
		else
			return 1 + profundidade(v.parent());
	}
	/** Retorna a altura da �rvore */
	public int height()
	{
		// M�todo que serve de exerc�cio
		int altura = 0;
		return altura;
	}
	/** Retorna um iterator com os elementos armazenados na �rvore */
	public Iterator elements()
	{
		// M�todo n�o implementados --- Coleguinha fique a vontade para faz�-los
		return null;
	}
	/** Retorna um iterator com as posi��es (n�s) da �rvore */
	public Iterator N�s()
	{
		// M�todo n�o implementados --- Coleguinha fique a vontade para faz�-los
		return null;
	}
	/** Retorna o n�mero de n�s da �rvore
	 */
	public int size()
	{
		return 0;
	}
	/** Retorna se a �vore est� vazia. Sempre vai ser falso, pois n�o permitimos remover a raiz
	 */
	public boolean isEmpty()
	{
		return false;
	}
	public Object replace(N� v, Object o)
	{
		// M�todo de exerc�cio
		return null;
	}
	/* In�cio da classe aninhada para armazenar o n�*/
	private class No implements N�
	{
		private Object o;
		private N� pai;
		private Vector filhos = new Vector();
		public N�(N� pai, Object o)
		{
			this.pai = pai;
			this.o = o;
		}
		public Object element()
		{
			return o;
		}
		public N� parent()
		{
			return pai;
		}
		public void setElement(Object o)
		{
			this.o = o;
		}
		public void addChild(N� o)
		{
			filhos.add(o);
		}
		public void removeChild(N� o)
		{
			filhos.remove(o);
		}
		public int childrenNumber()
		{
			return filhos.size();
		}
		public Iterator children()
		{
			return filhos.iterator();
		}
	}
	/* Fim da classe aninhada para armazenar o n� */
}
« Abril 2024 »
Abril
DoSeTeQuQuSeSa
123456
78910111213
14151617181920
21222324252627
282930