WEB开发网
开发学院软件开发C语言 数据结构与算法(C#实现)系列---N叉树(二) 阅读

数据结构与算法(C#实现)系列---N叉树(二)

 2004-02-07 12:44:53 来源:WEB开发网   
核心提示:数据结构与算法(C#实现)系列---N叉树(二)Heavenkiller(原创)public override uint Degree { get { return this.degree; } } //只用于空树结点 public virtual void AttachKey(object _obj) {

数据结构与算法(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;

   }

}

}

Tags:数据结构 算法 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接