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

原创 2004年02月03日 13:39:00

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

         }

 

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

        

 

     }

}

 

数据结构基础:二叉树,堆,多叉树

二叉树是结合了数组和链表的优点和缺点(数组插入效率低,链表查找效率低) 二叉树的存储结构一般采用二叉链表,树中每一个结点都有一个数据域data还有两个分别用于指向该节点的左右儿子结点的指针域,通过这两...
  • kingmicrosoft
  • kingmicrosoft
  • 2015年11月05日 22:19
  • 1822

八叉树 C++ 基础 源码

http://blog.csdn.net/pizi0475/article/details/6269060四叉树或四元树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快...
  • yulinxx
  • yulinxx
  • 2017年06月20日 23:28
  • 991

C#一颗简单多叉树的实现(原理、广度优先遍历、深度优先遍历)

实现原理: 多叉树中的节点有两个域,分别表示节点名以及一个链表,该链表存储其子节点的地址。根据用户输入进行深度递归调用建树。另外还实现了一个层次优先遍历函数。该函数用一个队列实现该多叉树的层次优先遍...
  • guigenyi
  • guigenyi
  • 2015年07月05日 09:22
  • 5442

场景管理:四叉树算法C++实现

简单实现了游戏中场景管理用到的四叉树算法 代码结构: object.h,object.cpp被管理的对象类quad_tree_node.h,quad_tree_node.cpp四叉树类ma...
  • u012234115
  • u012234115
  • 2015年07月30日 21:04
  • 3004

数据结构:多叉树的建立

我有这么个需求,是一张地区表,地区表中包含多层级的地区,如:中国,河北省,邢台市,桥东区。一共有4个层级。数据库字段设计为 id parentId name level 编号 ...
  • s297165331
  • s297165331
  • 2016年04月23日 09:38
  • 2017

基于八叉树的网格生成算法剖析

前言  对于网格生成这个主题,之前的网格生成系列的三篇博客文章分别介绍了MC算法,SMC算法以及Cuberille算法三种方法。同时还有一篇介绍网格生成与种子点生长算法高效结合的算法。本篇文章继续这一...
  • Augusdi
  • Augusdi
  • 2014年07月01日 09:19
  • 13320

四叉树的C++实现

数据结构 抽象数据类型定义如下: ADT QuadTrees{ 数据对象D:D是具有相同性质的具有二维结构的数据元素的集合,本实验为坐标数据。 数据关系R:若D为空集,...
  • qithon
  • qithon
  • 2016年02月29日 15:59
  • 1034

多叉树的递归和非递归遍历

1、递归方法 [cpp] view plain copy void travel(Node *pNode)   {       if (pNode == Null)      ...
  • ztsinghua
  • ztsinghua
  • 2016年04月10日 21:58
  • 5032

数据结构与算法JavaScript - 二叉树和二叉查找树

树是计算机科学中常用到的一种
  • HobbitHero
  • HobbitHero
  • 2016年07月28日 18:01
  • 1184

Java 多叉树的简单实现

Java 多叉树的简单实现
  • goodsave
  • goodsave
  • 2017年05月27日 18:58
  • 1408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构与算法(C#实现)系列---N叉树(二)
举报原因:
原因补充:

(最多只允许输入30个字)