数据结构与算法(C#实现)系列---广义树(一)
                                     Heavenkiller(原创)
广义树和基本树的主要区别就是有任意的度
 
 
using System;
using System.Collections;
 
namespace DataStructure
{
     /// <summary>
     /// GeneralTree 的摘要说明。
     /// general tree is a tree which has a arbitrary degree and no empty tree
     /// use ArrayList to replace ListAsLinkedList 
     /// </summary>
     public class GeneralTree:Tree
     {
         protected object key=null;
         protected uint degree=0;
         //protected uint height=0;
 
         protected ArrayList treeList=new ArrayList();
 
         public GeneralTree(object _objKey)
         {
              //
              // TODO: 在此处添加构造函数逻辑
              //
 
              key=_objKey;
              degree=0;
         //   height=0;
              ArrayList treeList=new ArrayList();
         }
 
         public virtual void AttackSubtree(GeneralTree _gTree)
         {
              this.treeList.Add(_gTree);
              ++degree;
         }
         public virtual GeneralTree DetachSubtree(GeneralTree _gTree)
         {
              
              this.treeList.Remove(_gTree);
              degree--;
              
              return _gTree;//?????  how to remove ,reference or object????
         }
 
         public override Tree this[uint _index]
         {
              get
              {
                   if(_index>=this.degree)
                       throw new Exception("my:out of index");
                   return (Tree)treeList[(int)_index];
              }
              set
              {
                   treeList[(int)_index]=value;
              }
         }