手机
当前位置:查字典教程网 >脚本专栏 >vbs >用VBS模拟二叉树,可以得到一个排序办法.
用VBS模拟二叉树,可以得到一个排序办法.
摘要:数据结构知识:二叉树中序便历可以用来做排序而VBS里面恰恰就没有现成的排序方法,因此我写了一个用VBS的二叉树,来解决排序问题,中序便历就是...

数据结构知识:

二叉树中序便历可以用来做排序

而VBS里面恰恰就没有现成的排序方法,因此我写了一个用VBS的二叉树,来解决排序问题,中序便历就是排序。大家可以参考原理,应用到自己的程序中。

<SCRIPTLANGUAGE="vbScript">

classnode

publicdata

publicLnode

publicRnode

subinsert(newData)

ifnewData<datathen

ifIsEmpty(Lnode)then

setLnode=newnode

Lnode.data=newData

else

Lnode.insertnewData

endif

else

ifIsEmpty(Rnode)then

setRnode=newnode

Rnode.data=newData

else

Rnode.insertnewData

endif

endif

endsub

endclass

classtree

publicroot

subinsertNode(newData)

ifIsEmpty(root)then

setroot=newnode

root.data=newData

else

root.insertnewData

endif

endsub

subpreOrderTraversal'前序便历

preOrderroot

document.write"<br/>"

endsub

subinOrderTraversal'中序便历

inOrderroot

document.write"<br/>"

endsub

subpostOrderTraversal'后序便历

postOrderroot

document.write"<br/>"

endsub

PrivatesubpreOrder(N)

ifIsEmpty(N)thenexitsub

document.write""&N.data

preOrderN.Lnode

preOrderN.Rnode

endsub

PrivatesubinOrder(N)

ifIsEmpty(N)thenexitsub

inOrderN.Lnode

document.write""&N.data

inOrderN.Rnode

endsub

PrivatesubpostOrder(N)

ifIsEmpty(N)thenexitsub

postOrderN.Lnode

postOrderN.Rnode

document.write""&N.data

endsub

endclass

'调用示例

setT=newtree

document.write"插入节点"

arr=array(39,69,94,47,50,72,55,41,97,73)

fori=0to9

document.write""&arr(i)

T.insertNodearr(i)

next

document.write"<br/>"

document.write"前序便历"

T.preOrderTraversal

document.write"中序便历"

T.inOrderTraversal

document.write"后序便历"

T.postOrderTraversal

</SCRIPT>

插入节点39699447507255419773

前序便历39694741505594727397

中序便历39414750556972739497

后序便历41555047737297946939

改写成sort(arr)函数

<SCRIPTLANGUAGE="vbScript">

classnode

publicdata

publicLnode

publicRnode

subinsert(newData)

ifnewData<datathen

ifIsEmpty(Lnode)then

setLnode=newnode

Lnode.data=newData

else

Lnode.insertnewData

endif

else

ifIsEmpty(Rnode)then

setRnode=newnode

Rnode.data=newData

else

Rnode.insertnewData

endif

endif

endsub

endclass

classtree

publicroot

publicArr

privateindex

subinsertNode(newData)

ifIsEmpty(root)then

setroot=newnode

root.data=newData

index=0

else

root.insertnewData

endif

endsub

subinOrderTraversal'中序便历

inOrderroot

endsub

PrivatesubinOrder(N)

ifIsEmpty(N)thenexitsub

inOrderN.Lnode

Arr(index)=N.data

index=index+1

inOrderN.Rnode

endsub

endclass

functionsort(arr)

setT=newtree

T.Arr=arr

foreachainarr

T.insertNodea

next

T.inOrderTraversal

sort=T.Arr

endfunction

'-------以上是sort函数部分------

'-------以下是调用示例------

'随便一个数组

arr=array(39,69,94,47,50,72,55,41,97,73)

'显示数组内容

foreachainarr

document.writea&""

next

document.write"<br/>"

'排序处理

arr=sort(arr)

'显示排序后的结果

foreachainarr

document.writea&""

next

</SCRIPT>

输出结果:

39699447507255419773

39414750556972739497

【用VBS模拟二叉树,可以得到一个排序办法.】相关文章:

用vbs对文本文件的内容进行排序

用vbs实现的利用ADSL拨号变ip刷投票的代码

vbs屏蔽键盘按键

使用VBS修改二进制文件HEX数据

常用VBS代码 值得一看

VBS教程:属性-AvailableSpace 属性

使用VBS访问外部文本文件一些方法和脚本实例代码

利用sql语句复制一条或多条记录

vbs教程 chm下载

vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?

精品推荐
分类导航