数据结构与算法C#实施系列--树两

数据结构与算法C#实施系列--树两
算法与数据结构(C #实现)系列--树(2)

Heavenkiller(原创)
公共课为:iprepostvisitor

{

私人ivisitor访客;

公众为(ivisitor _vis){访客= _vis;}

#区iprepostvisitor成员
public void preVisit(对象_obj)

{

添加inorder.previsit / /待办事项:

}
公共无效访问(对象_obj)

{

添加顺序:

this.visitor.visit(_obj);

}
公共无效postvisit(对象_obj)

{

添加inorder.postvisitor / /待办事项:

}
#铁心端部定点
}

公共课的后序:iprepostvisitor

{

私人ivisitor访客;

公序(ivisitor _vis){访客= _vis;}

#区iprepostvisitor成员
public void preVisit(对象_obj)

{

添加postorder.previsit / /待办事项:

}
公共无效访问(对象_obj)

{

添加后序遍历访问 / /待办事项:

}
公共无效postvisit(对象_obj)

{

添加postorder.postvisitor / /待办事项:

this.visitor.visit(_obj);

}
#铁心端部定点
}

保护类:ivisitor enumvisitor

{

队列thisqueue;

公共enumvisitor(队列_que)

{

这thisqueue = _que;

}

#区ivisitor成员
公共无效访问(对象_obj)

{

添加enumvisitor访问 / /待办事项:

This.thisQueue.Enqueue(_obj);

}
#铁心端部定点

}

#区IEnumerable的成员
市民IEnumerator GetEnumerator()

{

添加tree.getenumerator / /待办事项:

enumvisitor可见=新enumvisitor(这个。keyqueue);

开关(这个。traversaltype)

{

traversaltype广度情况:

BreadthFirstTraversal(VIS);

打破;

案例traversaltype.predepth:

序预览=新的序(VIS);

depthfirsttraversal(预览);

打破;

案例traversaltype.indepth:

为了该=新的序(VIS);

depthfirsttraversal(隐形);

打破;

案例traversaltype.postdepth:

后序后期=新的后序(VIS);

depthfirsttraversal(后期);

打破;
违约:

console.writeline(警告:请先设置一个旅游类型!——SetTraversalType(traversaltype无效_type))

抛出新的异常()警告:请先设置一个旅行类型!);如果没有设置。

打破;

}

返回this.keyqueue.getenumerator();

}
#铁心端部定点

tag:算法数据结构系列电脑软件

相关内容