数据结构与算法 (C# 实现 ) 系列 --- 广义树 ( 一 )
Heavenkiller( 原创 )
广义树和基本树的主要区别就是有任意的度
using System;
using System.Collections;
namespace DataStructure
{
///
1<summary>
2
3/// GeneralTree 的摘要说明。
4
5/// general tree is a tree which has a arbitrary degree and no empty tree
6
7/// use ArrayList to replace ListAsLinkedList
8
9/// </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 ;
}
}