用VBS模擬二叉樹,可以得到一個(gè)排序辦法.
2020-07-26 12:04:08
供稿:網(wǎng)友
 
						數(shù)據(jù)結(jié)構(gòu)知識(shí): 
二叉樹中序便歷可以用來做排序 
而VBS里面恰恰就沒有現(xiàn)成的排序方法,因此我寫了一個(gè)用VBS的二叉樹,來解決排序問題,中序便歷就是排序。大家可以參考原理,應(yīng)用到自己的程序中。 
<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 " " & 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 " " & 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 " " & N.data    
 end sub 
end class 
'調(diào)用示例 
set T=new tree 
document.write  "插入節(jié)點(diǎn)" 
arr=array(39,69,94,47,50,72,55,41,97,73) 
for i=0 to 9 
 document.write " " & arr(i) 
 T.insertNode  arr(i)  
next 
document.write "<br/>" 
document.write  "前序便歷" 
T.preOrderTraversal  
document.write  "中序便歷" 
T.inOrderTraversal 
document.write  "后序便歷" 
T.postOrderTraversal  
 </SCRIPT> 
  
插入節(jié)點(diǎn) 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)函數(shù)  
 <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函數(shù)部分------ 
 '-------以下是調(diào)用示例------ 
 '隨便一個(gè)數(shù)組 
arr=array(39,69,94,47,50,72,55,41,97,73) 
 '顯示數(shù)組內(nèi)容 
for each a in arr  
  document.write  a & " " 
next 
document.write  "<br/>"  
 '排序處理 
arr=sort(arr) 
 '顯示排序后的結(jié)果 
for each a in arr  
  document.write  a & " " 
next 
 </SCRIPT> 
輸出結(jié)果: 
39 69 94 47 50 72 55 41 97 73  
39 41 47 50 55 69 72 73 94 97