#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;
}
val
和两个指向左右子树的指针 left
和 right
。 1
/ \
2 3
/ \
4 5
这段代码展示了如何在 C++ 中实现和遍历一个简单的二叉树。
上一篇:c++ int转char
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站