深度优先搜索和广度优先搜索
2018-03-01 15:36
295 查看
#include <iostream> #include <stack> #include <queue> using namespace std; struct BitNode { int data; BitNode *left, *right; BitNode(int x) :data(x), left(0), right(0){} }; void Create(BitNode *&root) { int key; cin >> key; if (key == -1) root = NULL; else { root = new BitNode(key); cout << key << "'s left...\n"; Create(root->left); cout << key << "'s right...\n"; Create(root->right); } } void PreOrderTraversal(BitNode *root) { if (root) { cout << root->data << " "; PreOrderTraversal(root->left); PreOrderTraversal(root->right); } } //深度优先搜索 //利用栈,现将右子树压栈再将左子树压栈 void DepthFirstSearch(BitNode *root) { stack<BitNode*> nodeStack; nodeStack.push(root); while (!nodeStack.empty()) { BitNode *node = nodeStack.top(); cout << node->data << ' '; nodeStack.pop(); if (node->right) { nodeStack.push(node->right); } if (node->left) { nodeStack.push(node->left); } } } //广度优先搜索,使用队列 void BreadthFirstSearch(BitNode *root) { queue<BitNode*> nodeQueue; nodeQueue.push(root); while (!nodeQueue.empty()) { BitNode *node = nodeQueue.front(); cout << node->data << ' '; nodeQueue.pop(); if (node->left) { nodeQueue.push(node->left); } if (node->right) { nodeQueue.push(node->right); } } } int main() { BitNode *root = NULL; Create(root); //前序遍历 PreOrderTraversal(root); //深度优先遍历 cout << endl << "dfs" << endl; DepthFirstSearch(root); //广度优先搜索 cout << endl << "bfs" << endl; BreadthFirstSearch(root); }
[xiongli@localhost data_struct]$ ./a.out
10
10's left...
99
99's left...
10
10's left...
-1
10's right...
-1
99's right...
29
29's left...
-1
29's right...
-1
10's right...
99
99's left...
82
82's left...
102
102's left...
-1
102's right...
-1
82's right...
-1
99's right...
-1
10 99 10 29 99 82 102
dfs
10 99 10 29 99 82 102
bfs
10 99 99 10 29 82 102
相关文章推荐
- 深度优先和广度优先搜索文件
- 深度优先搜索与广度优先搜索
- 图(图的存储和图的遍历即深度优先搜索遍历图和广度优先搜索遍历图)
- 深度优先搜索和广度优先搜索的简单对比
- 深度优先搜索和广度优先搜索
- 深度优先搜索DFS/广度优先搜索BFS的一个应用实例(华为编程大赛赛题)
- 数据结构学习_图(1)深度优先搜索、广度优先搜索和最小生成树
- 深度优先搜索与广度优先搜索异同
- 图的遍历之 深度优先搜索和广度优先搜索
- 图搜索——深度优先与广度优先
- [算法] 基本图算法:深度优先搜索、广度优先搜索
- 深度优先搜索和广度优先搜索的比较与分析
- 优先深度搜索和广度搜索
- 【数据结构】深度优先搜索BFS和广度优先搜索DFS
- 数据结构与算法--图的搜索(深度优先和广度优先)
- 深度优先搜索和广度优先搜索的比较与分析
- 数据结构4-深度优先搜索和广度优先搜索
- Java实现数据结构之深度优先搜索DFS和广度优先搜索BFS
- 深度优先搜索和广度优先搜索的代码实现
- 图--1.广度优先搜索和深度优先搜