主页 > 知识库 > 用VBS模拟二叉树,可以得到一个排序办法.

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

热门标签:怎么看地图标注 百度地图标注是什么意思 外呼系统免费招代理 广州ai电销机器人一般多少钱 深圳外呼系统收费 拉萨外呼系统业务 外呼线路中继线是什么 外呼系统telrobot 合肥高德地图标注
数据结构知识:

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

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

SCRIPT LANGUAGE="vbScript">
 class node
 public data
 public Lnode
 public Rnode
 sub insert(newData)

  if newDatadata 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 newDatadata 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模拟二叉树,可以得到一个排序办法.》,本文关键词  用,VBS,模拟,二叉,树,可以,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《用VBS模拟二叉树,可以得到一个排序办法.》相关的同类信息!
  • 本页收集关于用VBS模拟二叉树,可以得到一个排序办法.的相关信息资讯供网民参考!
  • 推荐文章