上一篇
在学习C++先序遍历之前,我们先来了解什么是“先序遍历”。先序遍历(Pre-order Traversal)是二叉树遍历的一种经典方式,广泛应用于数据结构教程中。它的访问顺序是:根节点 → 左子树 → 右子树。这种遍历方式非常适合用于复制一棵树、生成前缀表达式等场景。
二叉树是一种每个节点最多有两个子节点的数据结构,分别称为左孩子和右孩子。例如:
struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}}; 先序遍历的规则非常简单:
这个过程天然适合用递归实现先序遍历,因为每一步都在处理一个更小的子问题。
下面是一个完整的C++程序,演示如何实现先序遍历:
#include <iostream>using namespace std;// 定义二叉树节点结构struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};// 先序遍历函数(递归实现)void preorderTraversal(TreeNode* root) { if (root == nullptr) { return; // 递归终止条件 } cout << root->val << " "; // 访问根节点 preorderTraversal(root->left); // 遍历左子树 preorderTraversal(root->right); // 遍历右子树}// 主函数:构建测试树并调用遍历int main() { // 构建如下二叉树: // 1 // / \ // 2 3 // / \ // 4 5 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); cout << "先序遍历结果: "; preorderTraversal(root); // 输出: 1 2 4 5 3 cout << endl; return 0;} 以上代码构建了一棵简单的二叉树,并调用preorderTraversal函数进行遍历。输出结果为:
先序遍历结果: 1 2 4 5 3
这完全符合“根→左→右”的访问顺序。
nullptr,否则会引发段错误。new分配内存,实际项目中建议使用智能指针(如unique_ptr)避免内存泄漏。通过本教程,你已经掌握了二叉树遍历算法中最基础的先序遍历方法。它不仅是面试常考题,也是理解更复杂树操作(如序列化、表达式求值)的基础。建议你动手敲一遍代码,加深理解!
关键词回顾:C++先序遍历、二叉树遍历算法、递归实现先序遍历、数据结构教程
本文由主机测评网于2025-12-03发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122228.html