Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tenshi

Árvore Binária em Visual Basic

Recommended Posts

Olá para todos http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

 

É possível usar ponteiros em Visual Basic?

Preciso criar um programa q criei e mostre graficamente uma árvore binária. Só que nunca vi isso em VB. Alguém já fez algo parecido?

 

Como eu crio os ponteiros?

 

Me ajudem, por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá para todos http://forum.imasters.com.br/public/style_emoticons/default/yay.gif É possível usar ponteiros em Visual Basic?Preciso criar um programa q criei e mostre graficamente uma árvore binária. Só que nunca vi isso em VB. Alguém já fez algo parecido?Como eu crio os ponteiros?Me ajudem, por favor.

Lembrando que ponteiros são como referências, apesar de não ser possível criar ponteiros em VB, você pode utilizar referências para objetos. Fiz um exemplo do que você quer, pelo menos os nós, a maneira de ligá-los e o desenho na tela. Só não criei os métodos de inserção (a inserção está sendo feita manualmente no exemplo). Dê uma olhada aqui: http://www.gs.kitbr.com/stuff/BTree.zipCerto? ;) Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá para todos ^^

 

PRECISO DE AJUDA DESESPERADAMENTE, novamente :unsure:

 

não estou conseguindo inserir dados na árvore, só consego inserir a raíz, as folhas da árvore não aparecem.

Dêem uma olhada no código, plis, e me ajudem, dizendo onde estou errando. Meu e-mail: sweety12@ibest.com.br

 

 

*** Class Nó ***

Public info As VariantPublic esquerda As NóPublic direita As Nó

*** Módulo Árvore ***

Dim raíz As NóDim valor As String' Variáveis usadas para inserir nó:Private varInsDuplicados As BooleanPublic varInsNó As VariantPublic Function Mostrar(ByVal r As Nó, ByVal posx As Long, ByVal posy As Long)	raio = 200	frmPrincipal.Circle (posx, posy), raio	frmPrincipal.CurrentY = posy - 100	frmPrincipal.CurrentX = posx - 100	frmPrincipal.Print r.info		If Not r.esquerda Is Nothing Then		eposx = posx - 600		eposy = posy + 600		frmPrincipal.Line (posx, posy + raio)-(eposx, eposy - raio)		Mostrar r.esquerda, eposx, eposy	End If		If Not r.direita Is Nothing Then		dposx = posx + 600		dposy = posy + 600		frmPrincipal.Line (posx, posy + raio)-(dposx, dposy - raio)		Mostrar r.direita, dposx, dposy	End IfEnd FunctionPublic Sub AddUnique(varNewItem As Variant)	' Adiciona novos nós, sem adicionar duplicados	varInsDuplicados = False	varInsNó = varNewItem		Call funInserirNó(raíz)End SubPrivate Function funInserirNó(ti As Nó) As Nó	' Adiciona um novo nó como ti	' Variáveis:	'	varInsNó: valor a ser inserido na árvore	'	varInsDuplicados: variável que indica se o valor é duplicado	If ti Is Nothing Then		Set ti = New Nó		Set ti.direita = Nothing		Set ti.esquerda = Nothing		ti.info = varInsNó	Else		If varInsNó < ti.info Then			Set ti.esquerda = funInserirNó(ti.esquerda)		ElseIf varInsNó > ti.info Then			Set ti.direita = funInserirNó(ti.direita)		Else			' não deixa adicionar porque o item já existe			MsgBox "Esse valor já existe na árvore.", vbInformation			If varInsDuplicados Then				Set ti.direita = funInserirNó(ti.direita)			End If		End If	End IfEnd FunctionPublic Sub MostrarArvore()Call Mostrar(raíz, 2000, 200)End SubPublic Sub WalkPreOrdem()valor = ""Call PréOrdem(raíz, valor)End SubPublic Sub PréOrdem(ti As Nó, valor)	If Not ti Is Nothing Then		valor = valor + ti.info		Call PréOrdem(ti.esquerda, valor)		Call PréOrdem(ti.direita, valor)	End If		frmPrincipal.lblPréOrdem.Caption = valorEnd Sub

Muito obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esqueceu de colocar o retorno da função funInserirNó:

 

Set funInserirNó = ti

Coloque isso na última linha da função e vai dar certo.

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.