% DFS 点灯问题 深度优先算法
void DFS(Vertex V)
{ visited[ v] = true;
for ( v的每一个临接点w)
if (! visited[ w] )
DFS ( w)
}
% BFS 广度优先算法
void BFS ( Vertex V)
{ visited[ V] = true;
Enqueue ( V, Q) ;
while ( ! IsEmpty[ Q] ) {
v= Dequeue ( Q) ;
for ( V的每一个零界点w) {
visited[ w] = true;
Engueue ( w, Q) ;
}
}
}
% 最小连通分量
void ListComponents ( Graph G)
{ for ( each V in G)
if ( ! visited[ v] ) {
DFS ( v) ;
}
}
% 拯救007
void save007(Graph G)
{ for ( each v in G) {
if ( !visited[ v] && FirstJump ( v) ) {
answer= DFS ( v) ;
if ( answer== YES) break ;
}
if ( answer== YES) output ( "YES" ) ;
else output ( "NO" ) ;
}
}
% 二叉树的遍历—先序遍历(根节点-> 左-> 右)
void PreOrderTraversal ( BinTree BT)
{
if ( BT) {
printf ( "%d" ,BT-> Data) ;
PreOrderTravelsal ( BT-> Left) ;
PreOrderTravelsal ( BT-> Right) ;
}
}
% 二叉树的遍历—中序遍历(左-> 根节点-> 右)
void InOrderTraversal ( BinTree BT)
{
if ( BT) {
InOrderTravelsal ( BT-> Left) ;
printf ( "%d" ,BT-> Data) ;
InOrderTravelsal ( BT-> Right) ;
}
}
% 二叉树的遍历—序遍历(左-> 右-> 根节点)
void PostOrderTraversal ( BinTree BT)
{
if ( BT) {
PostOrderTravelsal ( BT-> Left) ;
PostOrderTravelsal ( BT-> Right) ;
printf ( "%d" ,BT-> Data) ;
}