算法题目刷题:2,BFS,DFS

(小米面试真题,他么的被虐了一脸)

BFS(宽度优先遍历),用队列来辅助实现

1)从源节点开始一次按照宽度进队列,然后弹出

2)每弹出一个点,把该结点没进过队列的临界点放入到队列

3)直到队列为空

//没啥说的扣代码,自己需要建造一个图的类自己实践

void methond(Nodess* node)
	{
		if( node==NULL )
		{
			return ;
		}
		deque queue;
		set st;
		queue.push_front(node);
		st.insert(node);
		while( !queue.empty() )
		{
			Nodess* cur = queue.back();
			cout<value<<" ";
			for( Nodess* next != cur->nexts )
			{
				if( !st.count(next))
				{
					st.insert(next);
					queue.push_front(next);
				}
			}		
		}		
	}

 

DFS(深度优先遍历),用栈来辅助实现

1)从源节点开始把结点按照深度依次入栈,然后弹出

2)每弹出一个点,把该结点没进过栈的临界点放入到栈

3)直到栈为空

void methond(Nodess* node)
	{
		if( node==NULL )
		{
			return ;
		}
		stack stk;
		set setset;
		stk.push(node);
		setset.insert(node);
		cout<value<value;
					break;			
				}		
			}		
		}

	}

 

//基础的知识需要用心理解

 

你可能感兴趣的:(刷算法题目)