Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++二叉树

作者:诸神之翼   发布日期:2025-07-06   浏览:9

#include <iostream>
using namespace std;

// 定义二叉树的节点结构
struct TreeNode {
    int val;           // 节点的值
    TreeNode* left;    // 左子树指针
    TreeNode* right;   // 右子树指针

    // 构造函数,初始化节点
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

// 创建一个简单的二叉树
TreeNode* createSampleTree() {
    //       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);
    return root;
}

// 前序遍历 (Pre-order Traversal)
void preOrder(TreeNode* node) {
    if (node == nullptr) return;
    cout << node->val << " ";  // 访问根节点
    preOrder(node->left);      // 遍历左子树
    preOrder(node->right);     // 遍历右子树
}

// 中序遍历 (In-order Traversal)
void inOrder(TreeNode* node) {
    if (node == nullptr) return;
    inOrder(node->left);       // 遍历左子树
    cout << node->val << " ";  // 访问根节点
    inOrder(node->right);      // 遍历右子树
}

// 后序遍历 (Post-order Traversal)
void postOrder(TreeNode* node) {
    if (node == nullptr) return;
    postOrder(node->left);     // 遍历左子树
    postOrder(node->right);    // 遍历右子树
    cout << node->val << " ";  // 访问根节点
}

int main() {
    TreeNode* tree = createSampleTree();

    cout << "前序遍历: ";
    preOrder(tree);
    cout << endl;

    cout << "中序遍历: ";
    inOrder(tree);
    cout << endl;

    cout << "后序遍历: ";
    postOrder(tree);
    cout << endl;

    // 清理内存
    // 这里为了简单起见,没有实现完整的删除操作,实际使用时应确保释放所有分配的内存

    return 0;
}

解释说明:

  1. TreeNode 结构体:定义了二叉树节点的数据结构,每个节点包含一个整数值 val 和两个指向左右子树的指针 leftright
  2. createSampleTree 函数:创建一个简单的二叉树用于测试。该树结构如下:
        1
       / \
      2   3
     / \
    4   5
  3. 前序遍历(preOrder):按照“根-左-右”的顺序访问节点。
  4. 中序遍历(inOrder):按照“左-根-右”的顺序访问节点。
  5. 后序遍历(postOrder):按照“左-右-根”的顺序访问节点。
  6. main 函数:创建二叉树并调用三种遍历方法输出结果。

这段代码展示了如何在 C++ 中实现和遍历一个简单的二叉树。

上一篇:c++ int转char

下一篇:c++ char* 转string

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站