ljb
2005-01-25 13:37:35 UTC
I tried converting the Binsry Tree sample VBA from
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvbadev/html/implementingbinarytree.asp
to vbscript and am stumped. Does anyone have time to find what I did wrong?
I get "runtime error: Object required" immediatly on "If ti Is Nothing Then"
in the AddNode function.
thanks
LJB
'-----------------------------------------
Class TreeItem
Public Value
Public LeftChild
Public RightChild
End Class
Class Tree
Private tiHead
'done to reduce program stack space
Private mfAddDups
Private mvarItemToAdd
Private Sub Class_Initialize()
Set tiHead = New TreeItem
End Sub
Public Sub Add(varNewItem)
mfAddDups = True
mvarItemToAdd = varNewItem
AddNode tiHead
End Sub
Public Function AddNode(ti)
If ti Is Nothing Then
Set ti = New TreeItem
ti.Value = mvarItemToAdd
Else
If mvarItemToAdd < ti.Value Then
Set ti.LeftChild = AddNode(ti.LeftChild)
ElseIf mvarItemToAdd > ti.Value Then
Set ti.LeftChild = AddNode(ti.RightChild)
Else
If mfAddDups Then
Set ti.RightChild = AddNode(ti.RightChild)
End If
End If
End If
Set AddNode = ti
End Function
Public Sub WalkPostOrder()
PostOrder tiHead
End Sub
Private Sub PostOrder(ti)
If Not ti Is Nothing Then
InOrder ti.LeftChild
InOrder ti.RightChild
wscript.echo ti.Value
End If
End Sub
End Class
Dim MyTree
Set MyTree = New Tree
With MyTree
.Add 11
.Add 12
.Add 14
.Add 15
.Add 13
.WalkPostOrder
End With
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvbadev/html/implementingbinarytree.asp
to vbscript and am stumped. Does anyone have time to find what I did wrong?
I get "runtime error: Object required" immediatly on "If ti Is Nothing Then"
in the AddNode function.
thanks
LJB
'-----------------------------------------
Class TreeItem
Public Value
Public LeftChild
Public RightChild
End Class
Class Tree
Private tiHead
'done to reduce program stack space
Private mfAddDups
Private mvarItemToAdd
Private Sub Class_Initialize()
Set tiHead = New TreeItem
End Sub
Public Sub Add(varNewItem)
mfAddDups = True
mvarItemToAdd = varNewItem
AddNode tiHead
End Sub
Public Function AddNode(ti)
If ti Is Nothing Then
Set ti = New TreeItem
ti.Value = mvarItemToAdd
Else
If mvarItemToAdd < ti.Value Then
Set ti.LeftChild = AddNode(ti.LeftChild)
ElseIf mvarItemToAdd > ti.Value Then
Set ti.LeftChild = AddNode(ti.RightChild)
Else
If mfAddDups Then
Set ti.RightChild = AddNode(ti.RightChild)
End If
End If
End If
Set AddNode = ti
End Function
Public Sub WalkPostOrder()
PostOrder tiHead
End Sub
Private Sub PostOrder(ti)
If Not ti Is Nothing Then
InOrder ti.LeftChild
InOrder ti.RightChild
wscript.echo ti.Value
End If
End Sub
End Class
Dim MyTree
Set MyTree = New Tree
With MyTree
.Add 11
.Add 12
.Add 14
.Add 15
.Add 13
.WalkPostOrder
End With