华域联盟 vbs 用VBS模拟二叉树,可以得到一个排序办法.

用VBS模拟二叉树,可以得到一个排序办法.

数据结构知识:

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

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

<SCRIPT LANGUAGE="vbScript">

 class node

 public data

 public Lnode

 public Rnode

 sub insert(newData)

  if newData<data then

   if IsEmpty(Lnode) then

    set Lnode=new node

    Lnode.data = newData

   else

    Lnode.insert newData

   end if

  else

   if IsEmpty(Rnode) then

    set Rnode=new node

    Rnode.data = newData

   else

    Rnode.insert newData

   end if

  end if

 end sub

 end class

class tree

 public root

 sub insertNode(newData)

  if IsEmpty(root) then

   set root=new node

   root.data=newData

   else

   root.insert newData

  end if

 end sub

 sub preOrderTraversal'前序便历

  preOrder root

  document.write "<br/>"

 end sub

 sub inOrderTraversal '中序便历

  inOrder root

  document.write "<br/>"

 end sub

 sub postOrderTraversal'后序便历

  postOrder root

  document.write "<br/>"

 end sub

 Private sub preOrder(N)

  if IsEmpty(N) then exit sub

  document.write "&nbsp;" & N.data

  preOrder N.Lnode

  preOrder N.Rnode  

 end sub

 Private sub inOrder(N)

  if IsEmpty(N) then exit sub

  inOrder N.Lnode

  document.write "&nbsp;" & N.data  

  inOrder N.Rnode   

 end sub

 Private sub postOrder(N)

  if IsEmpty(N) then exit sub

  postOrder N.Lnode    

  postOrder N.Rnode

  document.write "&nbsp;" & N.data   

 end sub

end class

'调用示例

set T=new tree

document.write  "插入节点"

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

for i=0 to 9

 document.write "&nbsp;" & arr(i)

 T.insertNode  arr(i) 

next

document.write "<br/>"

document.write  "前序便历"

T.preOrderTraversal 

document.write  "中序便历"

T.inOrderTraversal

document.write  "后序便历"

T.postOrderTraversal 

 </SCRIPT>

 

插入节点 39 69 94 47 50 72 55 41 97 73

前序便历 39 69 47 41 50 55 94 72 73 97

中序便历 39 41 47 50 55 69 72 73 94 97

后序便历 41 55 50 47 73 72 97 94 69 39

改写成sort(arr)函数 

 <SCRIPT LANGUAGE="vbScript">

 class node

 public data

 public Lnode

 public Rnode

 sub insert(newData)

  if newData<data then

   if IsEmpty(Lnode) then

    set Lnode=new node

    Lnode.data = newData

   else

    Lnode.insert newData

   end if

  else

   if IsEmpty(Rnode) then

    set Rnode=new node

    Rnode.data = newData

   else

    Rnode.insert newData

   end if

  end if

 end sub

 end class

class tree

 public root 

 public Arr

 private index

 sub insertNode(newData)

  if IsEmpty(root) then

   set root=new node

   root.data=newData

   index=0

   else

   root.insert newData

  end if

 end sub

 sub inOrderTraversal '中序便历

  inOrder root   

 end sub

 Private sub inOrder(N)

  if IsEmpty(N) then exit sub

  inOrder N.Lnode

  Arr(index)= N.data 

  index=index+1

  inOrder N.Rnode   

 end sub

end class

function sort(arr)

 set T=new tree

 T.Arr=arr

 for each a in arr 

  T.insertNode  a 

 next 

 T.inOrderTraversal 

 sort=T.Arr

end function

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

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

 '随便一个数组

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

 '显示数组内容

for each a in arr 

  document.write  a & "&nbsp;"

next

document.write  "<br/>" 

 '排序处理

arr=sort(arr)

 '显示排序后的结果

for each a in arr 

  document.write  a & "&nbsp;"

next

 </SCRIPT>

输出结果:

39 69 94 47 50 72 55 41 97 73 

39 41 47 50 55 69 72 73 94 97

本文由 华域联盟 原创撰写:华域联盟 » 用VBS模拟二叉树,可以得到一个排序办法.

转载请保留出处和原文链接:https://www.cnhackhy.com/14458.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部