PC6下载站

分类分类

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

关注+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;


         }


     }


}


 


展开全部

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消