#ifndef TREE_VISIT_H
#define TREE_VISIT_H
#include<vector>
#include<stack>
#include<queue>
#include"../data_struct/data_struct.h"
template<typename T>
class tree_visit
{
public:
///先序遍历(非递归)
static void dlr(const std::shared_ptr<node_bt<T>>& root, std::vector<T> &out_arr)
{
if (nullptr == root)
{
return;
}
std::stack<std::shared_ptr<node_bt<T>>> s;
while (root || s.size())
{
while (root)
{
out_arr.push_back(root->val);
s.push(root);
root = root->left;
}
if (s.size())
{
root = s.top();
s.pop();
root = root->right;
}
}
}
///后序遍历(非递归)
static void lrd(const std::shared_ptr<
树的几种遍历方式(C++实现)
最新推荐文章于 2024-07-20 20:46:26 发布
本文介绍了树的两种主要遍历方法:深度优先搜索(DFS)和广度优先搜索(BFS),并提供了C++语言的实现。通过前序、中序和后续遍历来阐述DFS,以及使用队列实现BFS。这些基本操作对于理解数据结构和算法至关重要。
摘要由CSDN通过智能技术生成