数据结构与算法(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<this.degree;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;
}
//----------------------------------------------------------------------------------
}
}
| QQ分组 | 淘宝群发 | QQ空间代码大全 | asp教程svn用法教程 | asp.net教程php教程 | 枕木 | 360编程教程网 | 多功能小吃车 | 武汉网站优化 |
| 友情链接平台 | 背背佳官方网站 | 您的位置 | 您的位置 | 您的位置 | 您的位置 | 您的位置 | 您的位置 | 您的位置 |
| 关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助中心 |
| Copyright 2006-2008 Powered by 360Coding.com,360编程教程网All Rights Reserved. E-Mail: 广告服务QQ:582044*** 本站资源来自原创和网络整理,如有侵权请通知本人,将尽快删除 |