国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

用VBS模擬二叉樹,可以得到一個排序辦法.

2020-06-26 18:05:59
字體:
來源:轉載
供稿:網友
數據結構知識: 

二叉樹中序便歷可以用來做排序 

而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 " " & 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 
'調用示例 

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 " " & 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 & " " 
next 
document.write  "<br/>"  
 '排序處理 
arr=sort(arr) 
 '顯示排序后的結果 
for each a in arr  
  document.write  a & " " 
next 
 </SCRIPT> 

輸出結果: 

39 69 94 47 50 72 55 41 97 73  
39 41 47 50 55 69 72 73 94 97 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方山县| 焦作市| 普宁市| 沙坪坝区| 漾濞| 方山县| 介休市| 洛扎县| 甘德县| 黔西| 合阳县| 东乡县| 大化| 南宫市| 西乌珠穆沁旗| 萍乡市| 蓬安县| 阳山县| 白水县| 昌江| 德安县| 大石桥市| 微山县| 咸宁市| 望谟县| 文水县| 灌阳县| 民丰县| 呈贡县| 永德县| 扎鲁特旗| 九龙坡区| 定襄县| 凤山市| 达孜县| 察隅县| 合江县| 安多县| 柳河县| 乐都县| 邵阳县|