用VBS模拟二叉树,可以得到一个排序办法.
作者 佚名
来源 ASP编程
浏览
发布时间 2013-07-09
数据结构知识: 二叉树中序便历可以用来做排序 而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 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于用VBS模拟二叉树,可以得到一个排序办法.的所有评论