深度优先搜索的C++的实现

 我来答
热爱生活的阿东4275
2016-05-14 · TA获得超过110个赞
知道答主
回答量:170
采纳率:100%
帮助的人:128万
展开全部

定义一个结构体来表达一个NODE的结构: struct Node  {    int self; //数据     node *left; //左节点     node *right; //右节点  };那么我们在搜索一个树的时候,从一个节点开始,能首先获取的是它的两个子节点。 例如: “                A           B           C      D   E          F   G”A是第一个访问的,然后顺序是B和D、然后是E。然后再是C、F、G。那么我们怎么来保证这个顺序呢?
这里就应该用堆叠的结构,因为堆叠是一个先进后出的顺序。通过使用C++的STL,下面的程序能帮助理解: “    const int TREE_SIZE = 9;     std::stack<node*> visited, unvisited;     node nodes[TREE_SIZE];     node* current;     for( int i=0; i<TREE_SIZE; i++) //初始化树         {                nodes[i].self = i;               int child = i*2+1;                if( child<TREE_SIZE ) //Left child                   nodes[i].left = &nodes[child];                else nodes[i].left = NULL;                child++;                if( child<TREE_SIZE ) //Right child                       nodes[i].right = &nodes[child];                else       nodes[i].right = NULL;        }                  unvisited.push(&nodes[0]); //先把0放入UNVISITED stack       while(!unvisited.empty()) //只有UNVISITED不空       {             current=(unvisited.top()); //当前应该访问的             unvisited.pop();               if(current->right!=NULL)              unvisited.push(current->right); // 把右边压入 因为右边的访问次序是在左边之后              if(current->left!=NULL)              unvisited.push(current->left);              visited.push(current);              cout<<current->self<<endl;       }”

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北京磐安云创科技有限公司_
2023-02-01 广告
价格只是购买产品或服务过程中的一项指标,如果单纯只比较价格,其实考虑并不是那么周到。价格、质量、服务、口碑、是否合适自己的情况等都需要一起考虑。以上回答如果还觉得不够详细,可以来咨询下北京磐安公司。北京磐安公司是一家专业从事高新软件的技术公... 点击进入详情页
本回答由北京磐安云创科技有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式