程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 數據結構與算法(C#實現)系列---N叉樹(一)

數據結構與算法(C#實現)系列---N叉樹(一)

編輯:.NET實例教程


數據結構與算法(C#實現)系列---N叉樹(一) 

Heavenkiller(原創) 

N叉樹的每一節點度數都相同,為N 

using System; 

using System.Collections; 



namespace DataStructure 



/// <summary> 

/// NaryTree 的摘要說明。-----N叉樹 

/// </summary> 

public class NaryTree:Tree 



// member variables 

protected object key; 

protected uint degree; 

protected ArrayList treeList=new ArrayList(); 

//protected uint height=0;//暫時默認為0 



//create an empty tree whose attribute of degree is _degree 

public NaryTree(uint _degree) 



// 

// TODO: 在此處添加構造函數邏輯 

// 

this.key=null; 

this.degree=_degree; 

this.treeList=null; 



//構造一棵葉子結點的N叉樹 

public NaryTree(uint _degree,object _key) 



this.key=_key; 

this.degree=_degree; 

this.treeList=new ArrayList(); 

this.treeList.Capacity=(int)_degree; 



for(int i=0;i<this.treeList.Capacity;i++) 





this.treeList.Add( this.GetEmptyInstance(_degree) ); 





//----------------------------------------------------------------- 

protected virtual object GetEmptyInstance(uint _degree) 

{ return new NaryTree(_degree); } 

//------------------------------------------------------------------- 

//judge whether the tree is an empty tree 

public override bool IsEmpty() 

{ return this.key==null; } 

//判定是否是葉子結點。如果即不是空樹且每一棵子樹均為空樹,則為葉子結點 

public override bool IsLeaf() 



$False$

if(IsEmpty()) 

return false; 

for(uint i=0;i<this.degree;i++) 



if( !(this[i].IsEmpty()) ) 

return false; 



return true; 



//-----------------------------------Inherited Attributes--------------------------------- 

public override object Key 



get 



return this.key; 





//索引器 

public override Tree this[uint _index] 



get 





if( _index>=this.degree ) 

throw new Exception("My:out of index!");//如果出界,則拋出異常 

if( this.IsEmpty() ) 

return null;//如果是空樹,則索引器返回一個 null 

return (Tree)this.treeList[(int)_index]; 



set 



this.treeList[(int)_index]=value; 



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved