資料結構與演算法(C#實現)系列---樹(二) (轉)
資料結構與演算法(實現)系列---樹(二)
Heavenkiller(原創)
:namespace prefix = o ns = "urn:schemas--com::office" />
public class InOrder:IPrePostVisitor
{
private IVisitor visitor;
public InOrder(IVisitor _vis){visitor=_vis;}
#region IPrePostVisitor 成員
public void PreVisit( _obj)
{
// TODO: 新增 InOrder.PreVisit 實現
}
public void Visit(object _obj)
{
// TODO: 新增 InOrder.Visit 實現
this.visitor.Visit(_obj);
}
public void PostVisit(object _obj)
{
// TODO: 新增 InOrder.PostVisitor 實現
}
#endregion
}
public class PostOrder:IPrePostVisitor
{
private IVisitor visitor;
public PostOrder(IVisitor _vis){visitor=_vis;}
#region IPrePostVisitor 成員
public void PreVisit(object _obj)
{
// TODO: 新增 PostOrder.PreVisit 實現
}
public void Visit(object _obj)
{
// TODO: 新增 PostOrder.Visit 實現
}
public void PostVisit(object _obj)
{
// TODO: 新增 PostOrder.PostVisitor 實現
this.visitor.Visit(_obj);
}
#endregion
}
protected class EnumVisitor:IVisitor
{
Queue thisQueue;
public EnumVisitor(Queue _que)
{
this.thisQueue=_que;
}
#region IVisitor 成員
public void Visit(object _obj)
{
// TODO: 新增 EnumVisitor.Visit 實現
this.thisQueue.Enqueue(_obj);
}
#endregion
}
#region IEnumerable 成員
public IEnumerator GetEnumerator()
{
// TODO: 新增 Tree.GetEnumerator 實現
EnumVisitor vis=new EnumVisitor(this.keyqueue);
switch (this.traversaltype)
{
case TraversalType.Breadth:
BreadthFirstTraversal(vis);
break;
case TraversalType.PreDepth:
PreOrder preVis=new PreOrder(vis);
DepthFirstTraversal(preVis);
break;
case TraversalType.InDepth:
InOrder inVis=new InOrder(vis);
DepthFirstTraversal(inVis);
break;
case TraversalType.PostDepth:
PostOrder postVis=new PostOrder(vis);
DepthFirstTraversal(postVis);
break;
default:
Console.WriteLine("WARNING:please set a travel type first!--void SetTraversalType(TraversalType _type) ");
//throw new Exception("WARNING:please set a travel type first!");//if not set a type, a exception will happen
break;
}
return this.keyqueue.GetEnumerator();
}
#endregion
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10794571/viewspace-974268/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構系列:Objective-C實現二叉樹資料結構Object二叉樹
- 【資料結構與演算法】二叉樹資料結構演算法二叉樹
- 演算法與資料結構系列 ( 二 ) - 實現前的基礎準備演算法資料結構
- 資料結構與演算法:二叉排序樹資料結構演算法排序
- 資料結構與演算法系列(一)陣列實現資料結構演算法陣列
- 資料結構和演算法-Go實現二叉搜尋樹資料結構演算法Go
- 資料結構與演算法-表示式二叉樹資料結構演算法二叉樹
- 資料結構與演算法-kd二叉樹(kNN)資料結構演算法二叉樹KNN
- 資料結構與演算法-二叉查詢樹資料結構演算法
- 資料結構與演算法-二叉樹性質資料結構演算法二叉樹
- 資料結構與演算法-二叉樹遍歷資料結構演算法二叉樹
- C#資料結構與演算法系列(八):棧(Stack)C#資料結構演算法
- 演算法與資料結構——AVL樹(平衡二叉搜尋樹)演算法資料結構
- 資料結構與演算法:AVL樹資料結構演算法
- C#資料結構與演算法系列(十五):排序演算法(SortAlgorithm)C#資料結構演算法排序Go
- [資料結構] 樹、二叉樹、森林的轉換資料結構二叉樹
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- 資料結構與演算法-kd二叉樹(基礎)資料結構演算法二叉樹
- 演算法與資料結構之二分搜尋樹演算法資料結構
- 【資料結構與演算法】二分鐘初識樹資料結構演算法
- 【演算法與資料結構 02】二叉樹的引入演算法資料結構二叉樹
- 【資料結構與演算法】手撕平衡二叉樹資料結構演算法二叉樹
- 『資料結構與演算法』二叉查詢樹(BST)資料結構演算法
- 資料結構-二叉搜尋樹的實現資料結構
- 看圖輕鬆理解資料結構與演算法系列(二叉搜尋樹)資料結構演算法
- 資料結構和演算法:二叉樹資料結構演算法二叉樹
- 利用PHP實現常用的資料結構之二叉樹(小白系列文章六)PHP資料結構二叉樹
- java資料結構和演算法——平衡二叉樹之左旋轉Java資料結構演算法二叉樹
- 資料結構與演算法-二叉查詢樹平衡(DSW)資料結構演算法
- 資料結構與演算法-二叉查詢樹平衡(AVL)資料結構演算法
- 【資料結構與演算法】手撕二叉查詢樹資料結構演算法
- 資料結構——樹與二叉樹的遍歷資料結構二叉樹
- 資料結構之二叉搜尋樹—Java實現資料結構Java
- iOS資料結構與演算法實戰 二叉樹的演算法實戰 Binary Tree PathsiOS資料結構演算法二叉樹
- 資料結構與演算法 二叉樹基本框架與知識點資料結構演算法二叉樹框架
- 資料結構和演算法面試題系列—二叉樹基礎資料結構演算法面試題二叉樹
- 資料結構(樹):二叉樹資料結構二叉樹
- 看圖輕鬆理解資料結構與演算法系列(AVL樹)資料結構演算法
- 看圖輕鬆理解資料結構與演算法系列(Radix樹)資料結構演算法