۱ – کلاس CTreeNode که هر ند درخت دودویی را توصیف می کند . این کلاس دارای یک متغیر به نام mNodeData از نوع Variant برای نگهداری داده هر گره است . همچنین دارای دو متغیر اشاره گر به نامهای mLeft و mRight می باشد که به ترتیب به فرزند چپ و فرزند راست درخت اشاره می کنند .
متد Get Data مقدار داده هر گره را بر می گرداند و متد Let Data مقدار داده هر گره را تنظیم می کند .
متد Get Left آدرس فرزند چپ هر گره را برمی گرداند و متد Let Left فرزند چپ هر گره را تنظیم می کند .
متد Get Right آدرس فرزند راست هر گره را برمی گرداند و متد Let Right فرزند راست هر گره را تنظیم می کند .
متد Insert برای اضافه کردن فرزند به یک گره به کار می رود . اگر مقدار گره ای که می خواهیم بعنوان فرزند به درخت اضافه کنیم کوچکتر از مقدار خود گره باشد بعنوان فرزند چپ و در غیر اینصورت بعنوان فرزند راست به گره اضافه می شود . اضافه شدن نیز بدین صورت است که ابتدا بررسی می شود آیا گره قبلاً فرزندی داشته است یا نه ؟ اگر نداشته باشد ( mLeft و یا mRight برابر Nothing باشد ) این گره جدید مستقیماً به گره متصل می شود اما اگر گره قبلاً فرزندی داشته باشد متد Insert برای آن فرزند اضافه می شود و اینکار تا جایی ادامه می یابد که به گره ای برسیم که فرزندی نداشته باشد :
Private mLeft as CtreeNode
Private mRight as CtreeNode
Private mNodeData as Variant
Public Property Get Data() as variant
Data=mNodeData
End property
Public Property Let Data(Byval vNewValue as Variant)x
MNodeData=vNewValue
End property
Public Property Get Left() as variant
Set Left=mLeft
End property
Public Property Let Left(Byval vNewValue as variant)x
Set mLeft=vNewValue
End property
Public Property Get Right() as variant
Set Right=mRight
End Property
Public Property Let Right(Byval vNewValue as variant)x
Set mRight=vNewValue
End Property
Public Sub Insert(value as variant)x
If value
If mLeft Is Nothing Then
Set mLeft=New CtreeNode
MLeft.Data=value
Else
MLeft.Insert(value)x
End if
Elseif value>mNodeData then
If mRight Is Nothing then
Set mRight=New CtreeNode
MRight.Data=value
Else
MRight.Insert(value)x
End if
End if
End sub
2 – کلاس CTree : این کلاس برای ایجاد درخت بکار می رود . این کلاس دارای متغیری بنام mRoot از نوع CTreeNode برای تعریف ریشه درخت است . همچنین یک متغیر mOutputString برای نمایش دادن اعضای درخت دارد .
Private mRoot as CtreeNode
Private mOutputString as String
Public Sub InsertNode(value as Varaint)x
If mRoot Is Nothing then
Set Mnode=New CtreeNode
MRoot.Data=value
Else
MRoot.Insert(value)x
End if
End sub
Public PreorderTraversal()x
MOutputString=””x
Call PreorderHelper(mRoot)x
End sub
Private Sub PreorderHelper(node As CtreeNode)x
If node Is nothing Then
Exit sub
End if
MOutputString=mOutputString & node.Data & “ “x
Call PreorderHelper(node.left)x
Call PreorderHelper(node.right)x
End sub
Public Sub InorderTraversal()x
MOutputString=””x
Call InorderHelper(mRoot)x
End sub
Private Sub InorderHelper(node as CtreeNode)x
If node Is nothing then
Exit sub
End if
Call InorderHelper(node.Left)x
MOutputString=mOutputString & node.Data & “ “x
Call InorderHelper(node.Right)x
End sub
Public PostorderTraversal()x
MOutputString=””x
Call PostorderHelper(mRoot)x
End sub
Private Sub PostorderHelper(node as CtreeNode)x
If node Is Nothing then
Exit sub
End if
Call PostorderHelper(node.Left)x
Call PostorderHelper(node.Right)x
MOutputString=mOutputString & node.Data & “ “x
End sub
Public Property Get Output() as Varaint
Output=mOutputString
End Property
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن