深度优先搜索c++框架
时间: 2023-10-12 15:57:43 浏览: 116
深度优先搜索(DFS)是一种用于遍历或搜索图或树的算法。它从起始节点开始,沿着一条路径尽可能深地探索,直到无法继续或达到目标节点,然后回溯到前一节点,继续探索其他路径,直到遍历完所有节点或找到目标。以下是一个使用C++实现深度优先搜索二叉树的基本代码示例:
```cpp
#include <iostream>
#include <stack>
using namespace std;
// 二叉树节点定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int value) : val(value), left(nullptr), right(nullptr) {}
};
// 深度优先搜索函数
void DFS(TreeNode* root) {
if (root == nullptr) {
return;
}
stack<TreeNode*> s;
s.push(root);
while (!s.empty()) {
TreeNode* current = s.top();
s.pop();
cout << current->val << " "; // 输出当前节点的值
if (current->right) {
s.push(current->right); // 将右子节点压入栈中
}
if (current->left) {
s.push(current->left); // 将左子节点压入栈中
}
}
}
int main() {
// 构建二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
cout << "深度优先搜索结果:";
DFS(root); // 执行深度优先搜索
return 0;
}
```
这个代码示例使用了一个栈来实现深度优先搜索。首先将根节点压入栈中,然后进入循环,每次从栈中弹出一个节点,并输出其值。然后将其右子节点压入栈中,再将其左子节点压入栈中。这样就可以按照深度优先的顺序遍历整个二叉树。
阅读全文