二叉树三种遍历方式——前序、中序、后序(C++)

[复制链接]
发表于 2025-10-20 10:45:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下是使用C++实现的二叉树前序、中序和后序遍历的递归方法示例:
  1. #include <iostream>
  2. using namespace std;
  3. // 二叉树节点结构体
  4. struct TreeNode {
  5.     int val;
  6.     TreeNode* left;
  7.     TreeNode* right;
  8.     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9. };
  10. // 前序遍历
  11. void preOrder(TreeNode* root) {
  12.     if (root == nullptr) return;
  13.     cout << root->val << " ";
  14.     preOrder(root->left);
  15.     preOrder(root->right);
  16. }
  17. // 中序遍历
  18. void inOrder(TreeNode* root) {
  19.     if (root == nullptr) return;
  20.     inOrder(root->left);
  21.     cout << root->val << " ";
  22.     inOrder(root->right);
  23. }
  24. // 后序遍历
  25. void postOrder(TreeNode* root) {
  26.     if (root == nullptr) return;
  27.     postOrder(root->left);
  28.     postOrder(root->right);
  29.     cout << root->val << " ";
  30. }
  31. int main() {
  32.     // 构建示例二叉树
  33.     //       1
  34.     //     /   \
  35.     //    2     3
  36.     //   / \   /
  37.     //  4   5 6
  38.     TreeNode* root = new TreeNode(1);
  39.     root->left = new TreeNode(2);
  40.     root->right = new TreeNode(3);
  41.     root->left->left = new TreeNode(4);
  42.     root->left->right = new TreeNode(5);
  43.     root->right->left = new TreeNode(6);
  44.     // 输出遍历结果
  45.     cout << "前序遍历: ";
  46.     preOrder(root);
  47.     cout << endl;
  48.     cout << "中序遍历: ";
  49.     inOrder(root);
  50.     cout << endl;
  51.     cout << "后序遍历: ";
  52.     postOrder(root);
  53.     cout << endl;
  54.     // 释放内存(简单示例中省略,实际使用时应注意内存管理)
  55.     return 0;
  56. }
复制代码
输出效果:
  1. 前序遍历: 1 2 4 5 3 6
  2. 中序遍历: 4 2 5 1 6 3
  3. 后序遍历: 4 5 2 6 3 1
复制代码
代码阐明:

  • 二叉树结构界说:使用TreeNode结构体表现二叉树的节点,包罗值val和左右子节点指针。
  • 递归遍历函数

    • 前序遍历:先访问根节点,然后递归遍历左子树,末了递归遍历右子树。
    • 中序遍历:先递归遍历左子树,然后访问根节点,末了递归遍历右子树。
    • 后序遍历:先递归遍历左子树,然后递归遍历右子树,末了访问根节点。

  • 示例二叉树的构建:手动创建了一个包罗6个节点的二叉树,用于演示遍历效果。
  • 内存管理:示例中未显式开释内存,实际应用中应根据必要添加delete使用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表