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

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

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

                                 Heavenkiller(原创)

N叉树的每一节点度数都相同,为N

using System;

using System.Collections;

 

namespace DataStructure

{

     /// <summary>

     /// NaryTree 的摘要说明。-----N叉树

     /// </summary>

     public class NaryTree:Tree

     {

         // member variables

         protected object key;

         protected uint degree;

         protected ArrayList treeList=new ArrayList();

         //protected uint height=0;//暂时默认为0

 

         //create an empty tree whose attribute of degree is _degree

         public NaryTree(uint _degree)

         {

              //

              // TODO: 在此处添加构造函数逻辑

              //

              this.key=null;

              this.degree=_degree;

              this.treeList=null;

         }

         //构造一棵叶子结点的N叉树

         public NaryTree(uint _degree,object _key)

         {

              this.key=_key;

              this.degree=_degree;

              this.treeList=new ArrayList();

              this.treeList.Capacity=(int)_degree;

 

              for(int i=0;i<this.treeList.Capacity;i++)

              {

                  

                   this.treeList.Add( this.GetEmptyInstance(_degree) );

              }

         }

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

         protected virtual object GetEmptyInstance(uint _degree)

         {    return new NaryTree(_degree); }

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

         //judge whether the tree is an empty tree

         public override bool IsEmpty()

         {    return this.key==null; }

         //判定是否是叶子结点。如果即不是空树且每一棵子树均为空树,则为叶子结点

         public override bool IsLeaf()

         {

              if(IsEmpty())

                   return false;

              for(uint i=0;i<this.degree;i++)

              {

                   if(  !(this[i].IsEmpty()) )

                       return false;

              }

              return true;

         }

         //-----------------------------------Inherited Attributes---------------------------------

         public override object Key

         {

              get

              {

                   return this.key;

              }

         }

         //索引器

         public override Tree this[uint _index]

         {

              get

              {

                  

                   if( _index>=this.degree )

                       throw new Exception("My:out of index!");//如果出界,则抛出异常

                   if( this.IsEmpty() )

                       return null;//如果是空树,则索引器返回一个 null

                   return (Tree)this.treeList[(int)_index];

              }

              set

              {

                   this.treeList[(int)_index]=value;

              }

         }

【数据结构与算法】二叉排序树C实现(含完整源码)

二叉排序树(Binary Sort Tree,简称BST),又称二叉查找树,是红黑树、AVL树等的基础。它或是一棵空树,或者是具有下列性质的一棵二叉树: 1、若它的左子树不空,则左子树上所有节点...
  • mmc_maodun
  • mmc_maodun
  • 2014年02月25日 00:02
  • 12100

二叉树C++实现数据结构实验

二叉树结构的C++实现,递归和非递归遍历方法, 1. 按先序序列构造一棵二叉链表表示的二叉树T; 2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列; 3. 求二叉树的深...
  • zhembrace
  • zhembrace
  • 2016年10月30日 20:50
  • 2673

数据结构 二叉树的递归算法、前序、中序、后序遍历(c语言实现)

实验目的 1、掌握二叉树的表示与实现。 2、掌握二叉树的定义、创建、遍历等基本操作的实现。 3、熟悉求二叉树深度等递归算法的设计与实现。 实验内容 问题描述:已知二叉树t,分别采用顺序存储结...
  • catkint
  • catkint
  • 2015年12月18日 23:08
  • 5538

数据结构与算法(C#实现)系列

  • 2007年07月04日 12:44
  • 124KB
  • 下载

C#数据结构和算法学习系列六----堆栈、堆栈的实现和应用

堆栈和队列是两种面向表的数据结构,它们都提供了易于理解的抽象。堆栈中的数据只能在表的某一端进行添加和删除操作,反之队列中的数据则在表的一端进行添加操作而在表的另一端进行删除操作。堆栈被广泛用于从表达式...
  • nlx0201
  • nlx0201
  • 2011年09月12日 10:58
  • 2718

数据结构入门学习系列-9(二叉树遍历的算法实现)

二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但...
  • yingmuliuchuan
  • yingmuliuchuan
  • 2017年11月08日 09:49
  • 87

LUT算法与数据结构-- 停车场管理和构造使n个城市连接的最小生成树

  • 2017年12月10日 17:57
  • 149KB
  • 下载

C#数据结构和算法学习系列二----泛型编程

面向对象编程的问题之一就是所谓“代码膨胀”的特征。为了说明方法参数所有可能的数据类型而需要重载某种方法或重载一套方法集合的时候,就会发生某种类型的代码膨胀。代码膨胀的解决方案之一就是使某个值呈现多种数...
  • nlx0201
  • nlx0201
  • 2011年09月11日 20:03
  • 977

C#数据结构和算法学习系列八----BitArray类

BitArray 类是按照紧密格式来表示位集合。虽然我们能把位集合存储在常规数组内,但是如果采用专门为位集合设计的数据结构就能够创建更加有效的程序。BitArray 类用来处理位集合。位集合可以用来有...
  • nlx0201
  • nlx0201
  • 2011年09月13日 17:23
  • 1739

C#数据结构和算法学习系列九----String类和StringBuilder类

字符串是字符的序列。它可以包含字母、数字和其他符号。在C#语言中把字符序列用一对闭合的双引号包围起来就可以产生文字串,如:“My name is xxx”。字符串可以由来自Unicode 字符集的任何...
  • nlx0201
  • nlx0201
  • 2011年09月14日 12:18
  • 1455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构与算法(C#实现)系列---N叉树(一)
举报原因:
原因补充:

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