分类分类
关注+2004-10-08作者:蓝点
数据结构与算法(C#实现)系列---N叉树(二)
Heavenkiller(原创)
public override uint Degree
{
get
{
return this.degree;
}
}
//只用于空树结点
public virtual void AttachKey(object _obj)
{
if(!IsEmpty())
throw new Exception("My:this node must be a empty tree node!");
this.key=_obj;
this.treeList=new ArrayList();//产生一个degree长的数组,并将其初始化为空树
this.treeList.Capacity=(int)this.degree;
for(int i=0;i { treeList.Add(new NaryTree(this.degree)); } /* foreach(object tmpObj in this.treeList) { tmpObj=new NaryTree(this.degree); } */ } //只用于叶子结点,将叶子结点变为一个空结点,并返回叶子结点关键字的引用 public virtual object DetachKey() { if(!IsLeaf()) throw new Exception("My:this node must be a leaf node!"); object result=this.key;//store this leaf node temporary this.key=null; this.treeList=null; return result; } //将子树连接到指定树的第num个结点上,前提是这个结点必须是空结点,并且度数相同,否则抛出异常 public virtual void AttachSubtree(uint num,NaryTree _naryTree) { if(this.IsEmpty()) throw new Exception("My:it can't be a empty tree!"); if(!(this[num-1].IsEmpty()) | this.degree!=_naryTree.degree ) throw new Exception("My:this[i-1] must be empty and they should have the same degree!"); this[num-1]=_naryTree; } //仅为非空树定义,从给定树中删去它的第i棵子树并连上一个空树,度数相同,并且返回删除的子树引用 public virtual NaryTree DetachSubtree(uint num) { if (IsEmpty()) throw new Exception("My:it can't be empty! "); NaryTree tmpTree=this; ((NaryTree)this[num-1]).key=null; ((NaryTree)this[num-1]).treeList=null; return this; } } }
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论